Docke 1 12 基础篇 48条命令 5

本文针对Docker1.12的48条命令,列出了container相关的18条命令,上一篇文章我们学习了容器生状态管理的几条命令,这这一篇中我们来看一下剩下的9条命令都能做什么。

container相关的命令

项番 命令 详解
No.1 attach Attach to a running container
No.9 exec Run a command in a running container
No.3 commit Create a new image from a container’s changes
No.4 cp Copy files/folders between a container and the local filesystem
No.7 diff Inspect changes on a container’s filesystem
No.10 export Export a container’s filesystem as a tar archive
No.13 import Import the contents from a tarball to create a filesystem image
No.29 rename Rename a container
No.31 rm Remove one or more containers

事前准备

先启动一个container准备用来霍霍。

[root@liumiaocn ~]# docker run --name=nginx -d -p80:80 nginx
46be04227f8ae236ec47acf0dcb20e65389cb88e6d724439d6305813ce6b7f4e
[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
46be04227f8a        nginx               "nginx -g 'daemon off"   2 seconds ago       Up 1 seconds        0.0.0.0:80->80/tcp, 443/tcp   nginx
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

exec

通过exec可以连接到一个正在运行的container执行一条命令,比如

[root@liumiaocn ~]# docker exec nginx hostname
46be04227f8a
[root@liumiaocn ~]#
  • 1
  • 2
  • 3

在实际中下面的方法用的更多,类似于连接到一个container中,然后可以执行各种操作

[root@liumiaocn ~]# docker exec -it nginx /bin/bash
root@46be04227f8a:/# hostname
46be04227f8a
root@46be04227f8a:/# pwd
/
root@46be04227f8a:/# exit
exit
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

退出后也不会有副作用

[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
46be04227f8a        nginx               "nginx -g 'daemon off"   2 minutes ago       Up About a minute   0.0.0.0:80->80/tcp, 443/tcp   nginx
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4

attach

attach到一个正在运行的container上,可以看到现在container的状况,按ctrl+C退出会伴随着container的退出,

[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS              PORTS                         NAMES
46be04227f8a        nginx               "nginx -g 'daemon off"   2 minutes ago       Up 2 minutes        0.0.0.0:80->80/tcp, 443/tcp   nginx
[root@liumiaocn ~]# docker attach nginx
^C[root@liumiaocn ~]#
[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@liumiaocn ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND                  CREATED             STATUS                     PORTS               NAMES
46be04227f8a        nginx               "nginx -g 'daemon off"   3 minutes ago       Exited (0) 7 seconds ago                       nginx
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

cp

docker cp用于将本地文件copy到某容器内
在host上创建一个helloworld.txt的文件

[root@liumiaocn ~]# echo "Hello world" >/tmp/helloworld.txt
  • 1

启动一个busybox的container,确认该container的/tmp下什么也没有

[root@liumiaocn ~]# docker run --name busybox -it busybox /bin/sh
/ # cd /tmp
/tmp # ls -l
total 0
/tmp #
  • 1
  • 2
  • 3
  • 4
  • 5

docker cp

[root@liumiaocn ~]# docker cp /tmp/helloworld.txt busybox:/tmp
[root@liumiaocn ~]#
  • 1
  • 2

确认container中的结果

/tmp # ls -l /tmp
total 4
-rw-r--r--    1 root     root            12 Sep 24 06:41 helloworld.txt
/tmp # cat /tmp/helloworld.txt
Hello world
/tmp #
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
44f08d7f4732        busybox             "/bin/sh"           6 minutes ago       Up 6 minutes                            busybox
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4

diff

docker是分层的,由镜像文件创建成容器,比如我们在docker cp中创建的container(44f08d7f4732),它有什么变化呢,至少我们把helloworld.txt给copy到该container
的/tmp下了,我们怎样才能看到这个差别呢

[root@liumiaocn ~]# docker diff busybox
C /root
A /root/.ash_history
C /tmp
A /tmp/helloworld.txt
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6

commit

但是当我们在这个时候同时在一个新的终端启动一个busybox的container的时候,这个新的container的/tmp下什么也没有.

[root@liumiaocn ~]# docker run -it busybox /bin/sh
/ # ls /tmp
/ # exit
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4

为了证明这不是幻觉,使用ps -a来看一下刚才这个container是的确存在过的,只是我们退出了而已

[root@liumiaocn ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                      PORTS               NAMES
63d08b54575c        busybox             "/bin/sh"           20 seconds ago      Exited (0) 14 seconds ago                       angry_northcutt
44f08d7f4732        busybox             "/bin/sh"           10 minutes ago      Up 10 minutes                                   busybox
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5

使用commit就可以解决这个问题了,把当前的变更保存到镜像中,在/tmp下显示一个文件不是什么好的例子,但是如果在一个Ubuntu的Base上
安装完JDK做一次commit,在安装完JDK之后的版本上再安装Tomcat再做一次commit,是不是你就可以得到了三个版本的镜像了,当然更多的做法是通过
dockerfile来实现的,但是commit倒也简单有效。

[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
44f08d7f4732        busybox             "/bin/sh"           15 minutes ago      Up 15 minutes                           busybox
[root@liumiaocn ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
busybox                   latest              2b8fd9751c4c        3 months ago        1.093 MB
74th/redmine-all-in-one   latest              cbd38a5bb23d        7 months ago        1.515 GB
[root@liumiaocn ~]# docker commit 44f08d7f4732 busybox:v2
sha256:185ccb97f18acf478b9a3a63964fcab96d2f2cc753e6ec16341013bbc0daa342
[root@liumiaocn ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
busybox                   v2                  185ccb97f18a        20 seconds ago      1.093 MB
busybox                   latest              2b8fd9751c4c        3 months ago        1.093 MB
74th/redmine-all-in-one   latest              cbd38a5bb23d        7 months ago        1.515 GB
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15

使用这个新生成的镜像busybox:v2启动一下确认/tmp下确实存在刚才的变化内容。

[root@liumiaocn ~]# docker run -it busybox:v2 /bin/sh
/ # cd /tmp
/tmp # ls -l
total 4
-rw-r--r--    1 root     root            12 Sep 24 06:41 helloworld.txt
/tmp # cat helloworld.txt
Hello world
/tmp # exit
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9

使用commit生成的新的镜像可以看出history的变化内容

[root@liumiaocn ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
busybox                   v2                  185ccb97f18a        13 minutes ago      1.093 MB
busybox                   latest              2b8fd9751c4c        3 months ago        1.093 MB
74th/redmine-all-in-one   latest              cbd38a5bb23d        7 months ago        1.515 GB
[root@liumiaocn ~]# docker history busybox:v2
IMAGE               CREATED             CREATED BY                                      SIZE                COMMENT
185ccb97f18a        13 minutes ago      /bin/sh                                         73 B
2b8fd9751c4c        3 months ago        /bin/sh -c #(nop) CMD ["sh"]                    0 B
<missing>           3 months ago        /bin/sh -c #(nop) ADD file:9ca60502d646bdd815   1.093 MB
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11

export

上面使用commit将正在运行的container做成了新的镜像文件,export则是可以用来将正在运行的container生成tar文件
启动一个container

[root@liumiaocn ~]# docker run -it busybox:v2 /bin/sh
/ #
  • 1
  • 2

确认container然后将其export出来

[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ea51341f60a5        busybox:v2          "/bin/sh"           19 seconds ago      Up 18 seconds                           goofy_roentgen
[root@liumiaocn ~]# docker export ea51341f60a5 >busyboxv3.tar
[root@liumiaocn ~]# ll busyboxv3.tar
-rw-r--r--. 1 root root 1299968 Sep 24 15:18 busyboxv3.tar
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7

rename

用于将container的名称进行修改

[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS              PORTS               NAMES
ea51341f60a5        busybox:v2          "/bin/sh"           About a minute ago   Up About a minute                       goofy_roentgen
[root@liumiaocn ~]# docker rename goofy_roentgen busybox
[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ea51341f60a5        busybox:v2          "/bin/sh"           2 minutes ago       Up 2 minutes                            busybox
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8

rm

删除container,如果删除正在运行中的container,要么stop之后再rm,要么加上-f选项

[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
ea51341f60a5        busybox:v2          "/bin/sh"           3 minutes ago       Up 3 minutes                            busybox
[root@liumiaocn ~]# docker rm -f busybox
busybox
[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@liumiaocn ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10

import

从tar文件生成docker管理的镜像文件,与save/load的区别在于,这个会丢history的内容

[root@liumiaocn ~]# ll busyboxv3.tar
-rw-r--r--. 1 root root 1299968 Sep 24 15:18 busyboxv3.tar
[root@liumiaocn ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
busybox                   v2                  185ccb97f18a        25 minutes ago      1.093 MB
busybox                   latest              2b8fd9751c4c        3 months ago        1.093 MB
74th/redmine-all-in-one   latest              cbd38a5bb23d        7 months ago        1.515 GB
[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@liumiaocn ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@liumiaocn ~]# docker import busyboxv3.tar busybox:v3
sha256:8227b6ef55ac3ffc6f4f2a0bf3ed31f96e32cd1275eeaa9f92cfd35eda9de0e1
[root@liumiaocn ~]# docker ps
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@liumiaocn ~]# docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS              PORTS               NAMES
[root@liumiaocn ~]# docker images
REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
busybox                   v3                  8227b6ef55ac        9 seconds ago       1.093 MB
busybox                   v2                  185ccb97f18a        26 minutes ago      1.093 MB
busybox                   latest              2b8fd9751c4c        3 months ago        1.093 MB
74th/redmine-all-in-one   latest              cbd38a5bb23d        7 months ago        1.515 GB
[root@liumiaocn ~]# docker history busybox:v3
IMAGE               CREATED             CREATED BY          SIZE                COMMENT
8227b6ef55ac        19 seconds ago                          1.093 MB            Imported from -
[root@liumiaocn ~]#
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
  • 27

再分享一下我老师大神的人工智能教程吧。零基础!通俗易懂!风趣幽默!还带黄段子!希望你也加入到我们人工智能的队伍中来!https://blog.csdn.net/jiangjunshow

猜你喜欢

转载自www.cnblogs.com/firsttry/p/10294247.html