下面看看常用的docker container相关的命令,主要包括显示列表,启动容器,进入容器,删除容器
ls 命令可以显示容器的列表
默认是查看当前 up的容器
[root@ip-172-16-1-150 ~]# docker container ls
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
922900db1dc0 nginx "/docker-entrypoint.…" 5 days ago Up 5 days 0.0.0.0:80->80/tcp test2
[root@ip-172-16-1-150 ~]#
如果想查看最新的容器,可以指定 -l ( latest);
[root@ip-172-16-1-150 ~]# docker container ls -l
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
989d817f0431 centos:6.9 "/bin/bash" 2 minutes ago Exited (127) About a minute ago centos6
如果想查看所有的容器,包括已经停止的容器,可以指定 -a
[root@ip-172-16-1-150 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
989d817f0431 centos:6.9 "/bin/bash" 2 minutes ago Exited (127) About a minute ago centos6
922900db1dc0 nginx "/docker-entrypoint.…" 5 days ago Up 5 days 0.0.0.0:80->80/tcp test2
如果希望显示静默输出 可以指定 -q
[root@ip-172-16-1-150 ~]# docker container ls -a -q
0a1dbdacb15e
989d817f0431
922900db1dc0
run 命令 启动容器
run相当于 pull+ create+start 的操作。他会检测当前的image,如果不存在,他会自动pull下载一个,创建一个容器,并启动。 启动的常见选项用 -p 指定端口映射,--name 指定名字 ,-d 后台运行 , --it 交互模式 , 以及最后面的初始化命令,注意,初始化命令必须要能夯住,容器就是一个进程,如果这个进程执行的命令结束了,那么这个容器就自动退出了,因此容器必须启动的时候,必须指定执行一段脚本或者代码保证他在不停地运行才行。
[root@ip-172-16-1-150 ~]# docker run -it --name centos6.9 centos:6.9 /bin/bash
[root@0a1dbdacb15e /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 3 03:04 pts/0 00:00:00 /bin/bash
root 12 1 0 03:05 pts/0 00:00:00 ps -ef
exec 或者 attach 进入容器
有两种方式进入容器,一个是exec,一个是attach; 前者是新创建一个tty终端,后者是进入同一个终端
一个方式是 exec
[root@ip-172-16-1-150 ~]# docker container ls -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0a1dbdacb15e centos:6.9 "/bin/bash" 12 minutes ago Exited (0) 11 minutes ago centos6.9
989d817f0431 centos:6.9 "/bin/bash" 17 minutes ago Exited (127) 16 minutes ago centos6
922900db1dc0 nginx "/docker-entrypoint.…" 5 days ago Up 5 days 0.0.0.0:80->80/tcp test2
[root@ip-172-16-1-150 ~]# docker exec -it test2 /bin/bash
另外一个方式是 attach,首先创建一个新的容器,并且进入一个终端;然后另外attach一个,会发现进入的是同一个终端,任何操作都是同步的
[root@ip-172-16-1-150 ~]# docker run -it centos:6.9 /bin/bash
[root@ip-172-16-1-150 ec2-user]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
9c36577306aa centos:6.9 "/bin/bash" 25 seconds ago Up 24 seconds sweet_jennings
[root@ip-172-16-1-150 ec2-user]# docker attach 9c36577306aa
[root@9c36577306aa /]# ls
bin dev etc home lib lib64 lost+found media mnt opt proc root sbin selinux srv sys tmp usr var
[root@9c36577306aa /]# ps -ef
UID PID PPID C STIME TTY TIME CMD
root 1 0 0 03:19 pts/0 00:00:00 /bin/bash
root 13 1 0 03:20 pts/0 00:00:00 ps -ef
[root@9c36577306aa /]#
rm 命令 删除容器
直接可以指定容器的id进行删除
[root@ip-172-16-1-150 ~]# docker container rm centos6
如果这个容器正在运行,需要指定-f 强制删除
如果我希望删除所有的容器,可以通过 docker ps -a -q 来获取所有的容器id,作为一个参数传给rm 命令进行删除
[root@ip-172-16-1-150 ~]# docker container rm -f `docker ps -a -q`
9c36577306aa
0a1dbdacb15e
922900db1dc0