docker容器 - 新建容器、启动容器、暂停容器和停止容器
实验环境
CentOS 7.5
容器
容器是镜像的运行实例。不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层;同时,容器中的应用进程处于运行状态。
新建容器
[root@kvm ~]# docker create -it docker.io/centos:7.3.1611
1cfd243950c3590d642d84c1c71ad3737adb65a74f10b6617bc174e867c02159
[root@kvm ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cfd243950c3 docker.io/centos:7.3.1611 "/bin/bash" 11 seconds ago Created determined_booth
c086bbf46c29 www.wholj.com:7.2 "/bin/bash" 25 minutes ago Up 23 minutes epic_hugle
b9783f331187 www.wholj.com:7.3 "/bin/bash" About an hour ago Exited (0) About an hour ago nostalgic_rosalind
e3fabe002814 www.wholj.com:7.3 "/bin/bask" About an hour ago Created romantic_montalcini
0573b7db7f4c www.wholj.com:7.3 "/bin/bash" 2 days ago Exited (0) 2 days ago determined_heyrovsky
90d3b762f848 docker.io/centos:7.3.1611 "/bin/bash" 2 days ago Exited (0) 2 days ago amazing_pike
8b06ff1ad2f5 docker.io/centos:7.3.1611 "/bin/bask" 2 days ago Created compassionate_ritchie
cf7b76228bb9 docker.io/centos:7.3.1611 "/bin/bash" 3 days ago Exited (0) 2 days ago elegant_wiles
e71feffdd925 docker.io/centos:latest "/bin/bash" 4 days ago Exited (127) 4 days ago sharp_curran
9217638356cb docker.io/centos:latest "/bin/bash" 4 days ago Exited (0) 4 days ago wonderful_franklin
container ID为1cfd243950c3的即为刚新建的容器;使用docker create
新建的容器处于停止状态,可以使用docker start
命令来启动它。
启动容器
[root@kvm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
c086bbf46c29 www.wholj.com:7.2 "/bin/bash" 36 minutes ago Up 34 minutes epic_hugle
[root@kvm ~]# docker start 1cfd243950c3
1cfd243950c3
[root@kvm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cfd243950c3 docker.io/centos:7.3.1611 "/bin/bash" 19 minutes ago Up 2 seconds determined_booth
c086bbf46c29 www.wholj.com:7.2 "/bin/bash" 44 minutes ago Up 42 minutes epic_hugle
注:命令docker ps
可查看当前处于运行状态的容器,docker ps -a
查看当前所有容器,包括未运行的容器。
新建并启动容器
要想新建并同时启动容器,可用docker run
,此命令等价于先执行docker create
,再执行docker start
。
eg:下面的命令行使用镜像docker.io/centos:latest新建一个ring器并将输出一个“docker test.”,之后容器自动终止:
[root@kvm ~]# docker run docker.io/centos:latest /bin/echo "docker test."
docker test.
通过docker ps
可看到刚使用docker run
新建的容器不在运行容器列表中(列表中不包含IMAGE为docker.io/centos:latest的容器):
[root@kvm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
1cfd243950c3 docker.io/centos:7.3.1611 "/bin/bash" 31 minutes ago Up 11 minutes determined_booth
c086bbf46c29 www.wholj.com:7.2 "/bin/bash" 56 minutes ago Up 54 minutes epic_hugle
让容器在后台以守护态运行
要想让容器在后台以守护态形式运行,可通过-d参数来实现;下边的命令行会让容器在后台运行:
[root@kvm ~]# docker run -d www.wholj.com:7.2 /bin/sh -c "while true;do echo hello world;sleep 1;done"
96c3de6f5678ed40c351f8a6a5871053ea42fd9ff4b8da64ac7afd0b8409533d
[root@kvm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96c3de6f5678 www.wholj.com:7.2 "/bin/sh -c 'while..." 4 seconds ago Up 3 seconds agitated_elion
通过docker ps
可查看到此容器处于运行状态。
注:docker ps
命令等价于docker container ls
命令。
查看容器日志
要想获取容器的输出信息,可通过docker logs CONTAINER_ID
来实现。
命令语法:
[root@kvm ~]# docker logs --help
Usage: docker logs [OPTIONS] CONTAINER
Fetch the logs of a container
Options:
--details 打印详细信息
-f, --follow 持续输出
--help 打印帮助信息
--since string 输出从某个时间开始的日志
--tail string 输出最近的若干日志
-t, --timestamps 显示时间戳信息
暂停和停止容器
主要介绍Docker容器的pause/unpause、stop和prune子命令。
- 暂停容器
暂停一个正在运行的容器使用docker pause CONTAINER
,命令语法:
[root@kvm ~]# docker pause --help
Usage: docker pause CONTAINER [CONTAINER...]
Pause all processes within one or more containers
Options:
--help 打印帮助信息
查看当前处于运行状态的容器并暂停
[root@kvm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96c3de6f5678 www.wholj.com:7.2 "/bin/sh -c 'while..." 24 minutes ago Up 24 minutes agitated_elion
[root@kvm ~]# docker pause 96c3de6f5678
96c3de6f5678
[root@kvm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96c3de6f5678 www.wholj.com:7.2 "/bin/sh -c 'while..." 24 minutes ago Up 24 minutes (Paused) agitated_elion
docker ps
命令执行返回结果前后的STATUS对比,后者多了一个(Paused),即该容器处于暂停状态。处于paused状态的容器,可以使用docker unpause CONTAINER_ID
命令来将之恢复到运行状态:
[root@kvm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96c3de6f5678 www.wholj.com:7.2 "/bin/sh -c 'while..." 31 minutes ago Up 31 minutes (Paused) agitated_elion
[root@kvm ~]# docker unpause 96c3de6f5678
96c3de6f5678
[root@kvm ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
96c3de6f5678 www.wholj.com:7.2 "/bin/sh -c 'while..." 31 minutes ago Up 31 minutes agitated_elion
- 停止容器
- 等待一段时间再停止
停止一个正在运行的容器使用docker stop CONTAINER
,命令语法:
- 等待一段时间再停止
[root@kvm ~]# docker stop --help
Usage: docker stop [OPTIONS] CONTAINER [CONTAINER...]
Stop one or more running containers
Options:
--help 打印帮助信息
-t, --time int Seconds to wait for stop before killing it (default 10)
该命令首先向容器发送SIGTERM信号,等待一段时间后(-t 参数指定,默认为10s),再发送SIGKILL信号来终止容器。
当执行了stop命令后,再执行docker container prune
命令,会自动清除掉所有处于停止状态的容器。
* 直接停止容器
可通过docker kill CONTAINER_ID
直接发送SIGKILL信号来强行终止容器。
[root@kvm ~]# docker kill --help
Usage: docker kill [OPTIONS] CONTAINER [CONTAINER...]
Kill one or more running containers
Options:
--help Print usage
-s, --signal string Signal to send to the container (default "KILL")
- 当docker容器中的应用终结后,容器也会自动终止。