Docker 学习笔记 - 容器的常用命令

下面看看常用的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
上一篇:第二周python基本图形绘制


下一篇:LeetCode 150. 逆波兰表达式求值