docker 命令(待完善)

1、docker run 新建并运行容器

docker run -it centos : 运行一个 centos 容器

[root@localhost java]# docker run -it 75835a67d134
[root@6d69ff2cbd03 /]# cd /
[root@6d69ff2cbd03 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@6d69ff2cbd03 /]# pwd
/
[root@6d69ff2cbd03 /]# 

打开一个新的终端,查看 docker中运行的容器

[root@localhost java]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
6d69ff2cbd03        75835a67d134        "/bin/bash"         26 seconds ago      Up 25 seconds                           dreamy_chandrasekhar
[root@localhost java]# 

1.1、--name 别名 给容器起别名

docker run -it --name mycentos124 centos: 运行一个 centos 容器,并通过--name参数指定一个别名为mycentos111

[root@localhost java]# docker run -it --name mycentos111 75835a67d134
[root@129ff84a96b4 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@129ff84a96b4 /]# 

docker ps命令查看正在运行的容器,最后一列name为刚才指定的别名

[root@localhost java]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
129ff84a96b4        75835a67d134        "/bin/bash"         18 seconds ago      Up 17 seconds                           mycentos111
[root@localhost java]# 

2、docker ps 列出当前docker中 正在运行容器

docker ps :列出当前docker中 正在运行容器

docker ps

[root@localhost java]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
7ba0aaaccee9        75835a67d134        "/bin/bash"         11 seconds ago      Up 9 seconds                            pensive_hypatia

2.1、docker ps [option]

-a: 列出当前所有正在运行的容器 + 历史上运行过的容器
-l: 显示 上一次运行过的容器
-n: 显示 上 n 次运行过的容器
-q: 静默模式,只显示容器编号
--no-trunc: 不截断输出

docker ps -a:(列出当前所有正在运行的容器 + 历史上运行过的容器)

[root@localhost java]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                        PORTS               NAMES
7ba0aaaccee9        75835a67d134        "/bin/bash"              10 minutes ago      Exited (0) 7 minutes ago                          pensive_hypatia
b25d05ece250        centos              "/bin/sh -c 'while t…"   3 days ago          Exited (255) 15 minutes ago                       priceless_morse
d4cca0323327        centos              "/bin/bash"              3 days ago          Exited (0) 3 days ago                             determined_meninsky
6f0d900f3a0e        75835a67d134        "/bin/bash"              3 days ago          Exited (137) 3 days ago                           mycentos
d38621653e1b        75835a67d134        "/bin/bash"              3 days ago          Exited (137) 3 days ago                           lucid_shtern
8d177f15646c        4ab4c602aa5e        "/hello"                 3 days ago          Exited (0) 3 days ago                             dreamy_hopper
678219b66f73        4ab4c602aa5e        "/hello"                 3 days ago          Exited (0) 3 days ago                             suspicious_yonath

docker ps -l: (显示 上一次运行过的容器)

[root@localhost java]# docker ps -l
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                     PORTS               NAMES
7ba0aaaccee9        75835a67d134        "/bin/bash"         10 minutes ago      Exited (0) 7 minutes ago                       pensive_hypatia

docker ps -lq: (显示 上一次运行过的容器的 容器id)

[root@localhost java]# docker ps -lq
7ba0aaaccee9

docker ps -aq: (列出当前所有正在运行的容器 + 历史上运行过的容器的 容器id)

[root@localhost java]# docker ps -aq
7ba0aaaccee9
b25d05ece250
d4cca0323327
6f0d900f3a0e
d38621653e1b
8d177f15646c
678219b66f73

3、docker start 启动容器(已停止运行的容器)

[root@localhost java]# docker ps -l       # 查看上一次运行的容器
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
129ff84a96b4        75835a67d134        "/bin/bash"         20 minutes ago      Exited (0) 23 seconds ago                       mycentos111
[root@localhost java]# 
[root@localhost java]# docker start 129ff84a96b4  #重新启动容器,129ff84a96b4是容器的id
129ff84a96b4
[root@localhost java]# 

4、docker rundocker start的区别

相同点:

都能启动容器。

不同点:

docker run :启动的是镜像,通过镜像创建容器,并启动。
docker start :启动的是历史的容器;

docker run 只在第一次运行容器时,需要通过 镜像 创建 容器。以后再次启动这个容器时,只需要使用命令 docker start 即可。
docker run 相当于执行了两步操作:

  • 1.将镜像放入容器中(docker create);
  • 2.然后将容器启动,使之变成运行时容器(docker start)。

docker start
docker start 的作用是,重新启动已存在的容器。
使用这个命令,我们必须事先知道这个容器的ID,可以使用docker ps 的命令找到这个容器的信息,然后 使用 docker start 命令启动容器。

5、 docker restart 重启容器(正在运行的容器)

[root@localhost java]# docker ps   # 查看正在运行的容器,STATUS是7分钟
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
129ff84a96b4        75835a67d134        "/bin/bash"         28 minutes ago      Up 7 minutes                            mycentos111
[root@localhost java]# 
[root@localhost java]# docker restart 129ff84a96b4   # 重启容器
129ff84a96b4                                         # 重启完毕后,返回一个容器id
[root@localhost java]# 
[root@localhost java]# docker ps    #查看正在运行的容器,STATUS是4秒钟
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
129ff84a96b4        75835a67d134        "/bin/bash"         29 minutes ago      Up 4 seconds                            mycentos111
[root@localhost java]# 

6、docker log 容器id 查看容器日志

参数说明:
-t: 加入时间戳
-f: 实时打印出最新的日志
--tail: 显示最后多少条

先运行一段程序

[root@localhost java]# docker ps 
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@localhost java]# docker run -d centos /bin/sh  -c  "while true;do echo hello zzyy;sleep 2;done"
2db1ff5cc3a18cc869e931de7109a34a5fd02a26df610cc1fca12e06e00a96b4
[root@localhost java]#
[root@localhost java]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
2db1ff5cc3a1        centos              "/bin/sh -c 'while t…"   15 seconds ago      Up 14 seconds                           elastic_bhaskara
[root@localhost java]# 

docker logs 2db1ff5cc3a1:一次性显示所有的日志

[root@localhost java]# docker logs 2db1ff5cc3a1
hello zzyy
hello zzyy
hello zzyy
hello zzyy
hello zzyy
hello zzyy
hello zzyy
hello zzyy

docker logs -t --tail 5一次性显示最新的5条日志,并加上时间戳

[root@localhost java]# docker logs -t  --tail 5 2db1ff5cc3a1
2018-11-08T09:47:00.808550916Z hello zzyy
2018-11-08T09:47:02.812877422Z hello zzyy
2018-11-08T09:47:04.816929773Z hello zzyy
2018-11-08T09:47:06.821516115Z hello zzyy
2018-11-08T09:47:08.825211232Z hello zzyy

docker logs -t -f --tail 5:刚开始显示出最新5条日志,并实时动态打印出最新的日志

[root@localhost java]# docker logs -t -f  --tail 5 2db1ff5cc3a1
2018-11-08T09:47:04.816929773Z hello zzyy
2018-11-08T09:47:06.821516115Z hello zzyy
2018-11-08T09:47:08.825211232Z hello zzyy
2018-11-08T09:47:10.827242700Z hello zzyy
2018-11-08T09:47:12.831193573Z hello zzyy
2018-11-08T09:47:14.835069567Z hello zzyy
2018-11-08T09:47:16.840180042Z hello zzyy
2018-11-08T09:47:18.841954295Z hello zzyy
2018-11-08T09:47:20.844636084Z hello zzyy
2018-11-08T09:47:22.848753931Z hello zzyy
2018-11-08T09:47:24.851426354Z hello zzyy
2018-11-08T09:47:26.854595560Z hello zzyy
.....(实时动态打印出最新的日志)

前期数据准备
docker run -it centos

[root@localhost java]# docker run -it centos
[root@f809b6f11262 /]#  
[root@f809b6f11262 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var

Ctrl + p + q:退出不停止容器

[root@f809b6f11262 /]# [root@localhost java]# 
[root@localhost java]# 
[root@localhost java]# 

验证,容器还在运行中

[root@localhost java]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS               NAMES
f809b6f11262        centos              "/bin/bash"              4 minutes ago       Up 4 minutes                            kind_ardinghelli
2db1ff5cc3a1        centos              "/bin/sh -c 'while t…"   27 minutes ago      Up 27 minutes                           elastic_bhaskara
[root@localhost java]# 

7、重新进入容器

7.1、 docker attach 容器id

docker attach 容器id:从宿主机 进入容器中

[root@localhost java]# docker attach f809b6f11262
[root@f809b6f11262 /]# ls
anaconda-post.log  bin  dev  etc  home  lib  lib64  media  mnt  opt  proc  root  run  sbin  srv  sys  tmp  usr  var
[root@f809b6f11262 /]# 

7.2、docker exec -t 容器id shell命令

在宿主机中,而不是在容器中,对容器执行命令

[root@f809b6f11262 /]# exit
exit
[root@localhost java]# docker run -it centos
[root@81bc97b5bc57 /]# 
[root@81bc97b5bc57 /]# 
[root@81bc97b5bc57 /]# [root@localhost java]#  #【此处是退出不停止容器】
[root@localhost java]# 
[root@localhost java]# 
[root@localhost java]# docker exec -t 81bc97b5bc57 ls -l /tmp
total 4
-rwx------. 1 root root 836 Oct  6 19:15 ks-script-7RxiSx
-rw-------. 1 root root   0 Oct  6 19:14 yum.log
[root@localhost java]# 

docker exec -t 81bc97b5bc57 ls -l /tmp 说明:

  • docker exec -t 81bc97b5bc57docker exec -t 容器id,在宿主机中,而不是在容器中,对容器执行命令。-t 表示只需要客户端即可。如果是-it 表示 需要与客户端进行交互。
  • ls -l /tmp 是显示目录tmp的结构。
    二者联在一块就是在宿主机中执行对容器的tmp目录的显示操作

7.3、docker attachdocker exec 的区别

docker attach:直接进入容器启动命令的终端,不会启动新的进程

docker exec:是在宿主机中打开新的终端,并且可以启动新的进程

[root@localhost java]# docker exec -it 81bc97b5bc57 /bin/sh
sh-4.2# 
sh-4.2#  
sh-4.2# ls
anaconda-post.log  bin	dev  etc  home	lib  lib64  media  mnt	opt  proc  root  run  sbin  srv  sys  tmp  usr	var

猜你喜欢

转载自blog.csdn.net/xiaojin21cen/article/details/83833595