docker容器操作
实验环境
操作系统:CentOS Linux release 7.3.1611 (Core)
docker版本:17.11.0-ce
容器操作
查看容器
加上-a表示已关闭容器也列出
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb32a4190e9c eg_postgresql "/usr/lib/postgresql…" 2 weeks ago Exited (137) 7 days ago pg_slv
786a02b627cb centos "/usr/sbin/init" 3 weeks ago Exited (137) 3 weeks ago optimistic_heisenberg
1e77d8579e70 centos "/usr/sbin/init" 3 weeks ago Exited (137) 3 weeks ago thirsty_golick
b60d2bf9bc66 centos "yum install vim -y" 3 weeks ago Exited (0) 3 weeks ago lucid_liskov
a1964007dc18 centos "yum update -y" 3 weeks ago Exited (0) 3 weeks ago happy_heisenberg
0cfa73029220 hello-world "/hello" 3 weeks ago Exited (0) 3 weeks ago cocky_shockley
6bf3e2317987 hello-world "/hello" 4 weeks ago Exited (0) 4 weeks ago
创建容器
创建自动删除的容器
[root@localhost ~]# docker run -it --rm ubuntu bash
其中i表示交互式操作,t表示终端,合在一起表示使用交互是终端查看结果;
rm表示容器退出后自动删除,避免浪费空间;
bash表示使用交互式shell
完成命令后自动进入容器,查看容器环境状况:
root@10dcd558e263:/# cat /etc/os-release
NAME="Ubuntu"
VERSION="16.04.3 LTS (Xenial Xerus)"
ID=ubuntu
ID_LIKE=debian
PRETTY_NAME="Ubuntu 16.04.3 LTS"
VERSION_ID="16.04"
HOME_URL="http://www.ubuntu.com/"
SUPPORT_URL="http://help.ubuntu.com/"
BUG_REPORT_URL="http://bugs.launchpad.net/ubuntu/"
VERSION_CODENAME=xenial
UBUNTU_CODENAME=xenial
退出容器:
root@10dcd558e263:/# exit
exit
创建后台运行的容器
加上-d参数,表示在后台运行
[root@localhost ~]# docker run -d ubuntu /bin/sh -c "while true;do echo hello world;sleep 1; done"
6d696601941abcffdb0c180a2b7e2d2c767cc3650b63de1664cae1aeefae5e01
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d696601941a ubuntu "/bin/sh -c 'while t…" 2 seconds ago Up 1 second wonderful_bassi
查看后台输出状态:
[root@localhost ~]# docker logs 6d696601941a
hello world
hello world
hello world
hello world
hello world
终止容器
使用stop命令可以终止正在运行的容器
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d696601941a ubuntu "/bin/sh -c 'while t…" 2 minutes ago Up 2 minutes wonderful_bassi
[root@localhost ~]# docker stop 6d696601941a
6d696601941a
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d696601941a ubuntu "/bin/sh -c 'while t…" 5 minutes ago Exited (137) 7 seconds ago wonderful_bassi
同理,start命令可以启动已关闭的容器,restart命令可以重启容器
进入容器
进入容器终端:
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ade096b7ac8d ubuntu "/bin/sh -c 'while t…" 4 seconds ago Up 3 seconds brave_stallman
[root@localhost ~]# docker exec -it ade096b7ac8d bash
删除容器
rm命令无法删除正在运行的容器:
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ade096b7ac8d ubuntu "/bin/sh -c 'while t…" 2 minutes ago Up 2 minutes brave_stallman
[root@localhost ~]# docker rm ade096b7ac8d
Error response from daemon: You cannot remove a running container ade096b7ac8daacfe25d76d74f888aa5f307e593d1fd2e5426a54819f9233965. Stop the container before attempting removal or force remove
想要删除正在运行的容器,要么先stop,要么在rm命令后加上-f
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
ade096b7ac8d ubuntu "/bin/sh -c 'while t…" 4 minutes ago Up 4 minutes brave_stallman
[root@localhost ~]# docker stop ade096b7ac8d
ade096b7ac8d
[root@localhost ~]# docker rm ade096b7ac8d
ade096b7ac8d
[root@localhost ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d696601941a ubuntu "/bin/sh -c 'while t…" 21 minutes ago Exited (137) 16 minutes ago wonderful_bassi
特别的,可以使用命令删除所有处于终止状态的容器:
查看容器状态,只有一个eg_postgresql容器为开启状态,其他的都处于终止状态
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
6d696601941a ubuntu "/bin/sh -c 'while t…" 23 minutes ago Exited (137) 17 minutes ago wonderful_bassi
cc5fefaaee53 ubuntu "/bin/bash" 24 minutes ago Exited (0) 23 minutes ago nervous_jepsen
bb32a4190e9c eg_postgresql "/usr/lib/postgresql…" 2 weeks ago Up 9 seconds 0.0.0.0:5436->5432/tcp pg_slv
786a02b627cb centos "/usr/sbin/init" 3 weeks ago Exited (137) 3 weeks ago optimistic_heisenberg
1e77d8579e70 centos "/usr/sbin/init" 3 weeks ago Exited (137) 3 weeks ago thirsty_golick
b60d2bf9bc66 centos "yum install vim -y" 3 weeks ago Exited (0) 3 weeks ago lucid_liskov
a1964007dc18 centos "yum update -y" 3 weeks ago Exited (0) 3 weeks ago happy_heisenberg
0cfa73029220 hello-world "/hello" 3 weeks ago Exited (0) 3 weeks ago cocky_shockley
6bf3e2317987 hello-world "/hello" 4 weeks ago Exited (0) 4 weeks ago tender_lamport
执行清理命令:
[root@localhost ~]# docker rm $(docker ps -a -q)
6d696601941a
cc5fefaaee53
786a02b627cb
1e77d8579e70
b60d2bf9bc66
a1964007dc18
0cfa73029220
6bf3e2317987
Error response from daemon: You cannot remove a running container bb32a4190e9cb870a2276d30e941efb8f8be4800b1764294e4a6747f4896c75e. Stop the container before attempting removal or force remove
由于eg_postgresql容器为运行状态,无法被rm命令删除,会报错
再次查看容器状态,只有eg_postgresql容器还健在
[root@localhost ~]# docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
bb32a4190e9c eg_postgresql "/usr/lib/postgresql…" 2 weeks ago Up 29 seconds 0.0.0.0:5436->5432/tcp pg_slv
同理的如果要清空所有容器,只需在docker rm命令后加-f即可