目录 理论
基础操作
在Ubuntu上配置Docker
踩坑
理论 1.容器的概念:容器是对应用程序及其依赖关系的封装,可以看成是一个轻量级的虚拟机环境。
容器能与主机的操作系统共享资源
运行容器开销小,可以大数量多开
容器具有强可移植性,换个电脑也能跑
虚拟机的目的是要完整地模拟另一个环 境;而容器的目的则是使应用程序能够移植,并把所有依赖关系包含进去(这一点有点像yum)
2.Docker利用的是Linux的容器技术,Docker 平台拥有两个不同部分
负责创建与运行容器的Docker引擎
用来发布容器的云服务Docker Hub
3.Docker工具:
集群管理工具Swarm
用于处理容器的图形用户界面Kitematic,
部署Docker主机的命令行工具Machine。
4.容器使软件应用程序与操作系统脱钩,从而为用户提供了一个干净而最小的Linux环境,同时在一个或多个隔离的“容器”中运行其他所有内容。容器的目的是启动一组有限的应用程序或服务(通常称为微服务),并使它们在独立的沙盒环境中运行
5.docker的组成
image(镜像)相当于可执行程序
一个程序需要代码经过编译来生成,dockerfile就是源代码,docker本体起到编译器的作用
镜像构建时,会一层层构建,前一层是后一层的基础。每一层构建完就不会再发生改变,后一层上的任何改变只发生在自己这一层
删除前一层文件的操作,实际不是真的删除前一层的文件,而是仅在当前层标记为该文件已删除。在最终容器运行的时候,虽然不会看到这个文件,但是实际上该文件会一直跟随镜像
container(容器)相当于一个进程
Docker Registry就是docker的代码仓库
6.docker的流程
例如运行一条docker run -p 3306:3306 –name mysql -d mysql的命令
docker客户端执行docker run命令
docker daemon通过graphdriver去Graph中拉取最新的mysql镜像
docker daemon通过networkdriver建立端口映射
docker daemon通过execdriver启动容器
注:docker对系统调用的操作由libcontainer实现,可以单独借此来操作防火墙、namespace等
基础操作 1.运行第一个镜像
1 2 3 4 5 docker run debian echo "Hello World" # docker run是启动容器命令 # 意为docker运行名叫debian的镜像并执行echo "Hello World"操作 # 若本地找不到debian镜像,docker会在Docker Hub自动下载
2.在镜像中使用shell
1 2 3 docker run -i -t debian /bin/bash # 退出容器中的shell直接运行exit即可
3.用指定主机名“CONTAINER”启动镜像
1 docker run -h CONTAINER -i -t debian /bin/bash
4.查看正在运行的容器信息,会出现容器id和名称(这两个字段都可以用作inspect的参数)
1 2 3 doker ps # docker ps -a 会显示所有容器
5.显示某容器的详细信息
1 2 3 docker inspect xx # docker inspect xx1 | grep xx2 会显示容器xx1含有xx2字段的属性
6.显示某容器哪些文件被改动过
7.显示容器中发生的一切操作记录
8.删除容器
1 2 3 docker rm xx # 常用命令docker rm -v $(docker ps -aq -f status=exited)删除所有已停止的容器
9.从远程服务器拉取镜像
在Ubuntu上配置Docker 1.安装Docker
1 2 3 4 5 sudo apt-get install \ apt-transport-https \ ca-certificates \ curl \ software-properties-common
添加Docker官方的GPG密钥1 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
设置Docker稳定版仓库1 2 3 4 sudo add-apt-repository \ "deb [arch=amd64] https://download.docker.com/linux/ubuntu \ $(lsb_release -cs) \ stable"
再一次更新apt源索引
下载安装Docker社区版1 sudo apt-get install docker-ce
2.检查Docker是否配置正确
检查Docker CE是否安装正确1 sudo docker run hello-world
若出现下述内容则表示安装正确1 2 3 4 5 6 7 8 Hello from Docker! This message shows that your installation appears to be working correctly. To generate this message, Docker took the following steps: 1. The Docker client contacted the Docker daemon. ...... For more examples and ideas, visit: https://docs.docker.com/get-started/
检查Docker是否可用
若只出现Client配置,则表示权限不正确1 2 3 4 5 6 7 8 9 10 Client: Docker Engine - Community Version: 20.10.7 API version: 1.41 Go version: go1.13.15 Git commit: f0df350 Built: Wed Jun 2 11:56:38 2021 OS/Arch: linux/amd64 Context: default Experimental: true Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get http://%2Fvar%2Frun%2Fdocker.sock/v1.24/version: dial unix /var/run/docker.sock: connect: permission denied
需输入1 sudo chmod a+rw /var/run/docker.sock
之后显示以下内容,则表示Docker安装正确并可用1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 Client: Docker Engine - Community Version: 20.10.7 API version: 1.41 Go version: go1.13.15 Git commit: f0df350 Built: Wed Jun 2 11:56:38 2021 OS/Arch: linux/amd64 Context: default Experimental: true Server: Docker Engine - Community Engine: Version: 20.10.7 API version: 1.41 (minimum version 1.12) Go version: go1.13.15 Git commit: b0f5bc3 Built: Wed Jun 2 11:54:50 2021 OS/Arch: linux/amd64 Experimental: false containerd: Version: 1.4.6 GitCommit: d71fcd7d8303cbf684402823e425e9dd2e99285d runc: Version: 1.0.0-rc95 GitCommit: b9ee9c6314599f1b4a7f497e1f1f856fe433d3b7 docker-init: Version: 0.19.0 GitCommit: de40ad0
踩坑 1.win系统启动docker桌面版失败就去把AppData里面的docker文件夹重命名为docker_backup,再重新启动即可