容器是Docker的另一个核心概念。
简单来说容器就是镜像的一个运行实例。
本次操作的运行环境为:
系统版本:centos7.4.1708
Docker版本:19.03.8
本部分内容将会进行对容器的创建、进入、停止、删除等操作进行讲解。
————————————————————————————————
创建容器:
新建容器:docker [container] create
注:由于container可以省略,所以后续部分命令将进行省略。
使用docekr create创建的容器处于停止状态,可以使用docker start命令启动
例:
# docker create -it busybox:latest
新建并启动容器:docker run
相当于docker create和docker start命令相结合。
启动容器后,可以通过docekr ps命令查看正在运行的容器。
例:
# docker run ubuntu:latest /bin/echo 'hello world' hello world
使用docker run命令来创建并启动容器时,Docker在后台的操作流程如下:
- 检查本地是否存在指定镜像,如果没有就从公有仓库下载
- 利用镜像创建一个容器并启动
- 分配一个文件系统个容器,并在只读的镜像层外挂载一层可写层
- 从宿主机配置的网桥接口中桥接一个虚拟接口到容器中
- 从网桥的地址池中分配一个ip地址给容器
- 执行用户指定的应用程序
- 执行完毕后容器终止
有时执行docker run命令会无法正常执行容器会报错直接退出,常见的错误代码如下:
- 125:Docker daemon执行出错,例如指定了不支持的Docker命令参数
- 126:所指定命令无法执行,例如权限出错
- 127:容器内命令无法找到
create命令与容器运行模式/环境和配置常用选项:
选项 | 说明 |
-d | 是否在后台运行容器,默认为否 |
- -group-add=[] | 运行容器的用户组 |
-i | 保持标准输入打开 |
-P | 随机端口映射 |
-p | 指定端口映射到本地端口,例 80:80 |
- -restart=“always” | 容器的重启策略,包括no,always等 |
- -rm=true/false | 容器退出后是否自动删除,不能与-d同时使用 |
-t | 分配一个伪终端 |
-v | 挂在主机上的文件卷到容器内 |
-w | 容器内的默认工作目录 |
- -device=[] | 映射物理机上设备到容器 |
-e | 指定容器内环境变量 |
-h | 指定容器内主机名 |
- -ip=“” | 指定容器的ip地址 |
- -link=[:aklias] | 链接到其他容器 |
- -name | 指定容器的别名 |
停止容器:
暂停容器:docker pause
例:启动一个容器并将它暂停
# docker run -d -p 80:80 --name web nginx:latest # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1b52669a4ce3 nginx:latest "nginx -g 'daemon of…" 3 minutes ago Up 3 minutes 0.0.0.0:80->80/tcp web # docker pause web web
可通过docker unpause命令进行恢复。
停止容器:docker stop
将一个正在运行的容器停止。
可用docker container prune命令将停止的容器清除。
可用docker start命令将停止的容器启动。
可用docker ps查看正在运行的容器。
可用docker ps -qa查看所有容器的ID。
可用docker restart命令重启运行的容器。
例:将一个运行的容器停止。
# docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 1b52669a4ce3 nginx:latest "nginx -g 'daemon of…" 6 minutes ago Up 6 minutes 0.0.0.0:80->80/tcp web # docker stop web web # docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
进入容器:
直接讲一个常用的命令:exec
命令格式:docker exec [参数] [容器]
常用参数:
- -e:指定环境变量列表
- -i:打开标准输入
- -t:分配一个伪终端
- -u:指定命令的用户名或ID
例:开启另一个终端
# docker exec -ti web bash root@1b52669a4ce3:/#
删除容器:
删除容器:docker rm
默认删除处于终止或退出状态的容器。
输入命令docker rm -f 删除处于运行中的容器
输入命令docker ps -a查看终止状态的容器
例:删除处于终止状态的容器
# docker rm web