Docker命令行参考(20) – docker kill终止运行中的容器

  1. Usage:  docker kill [OPTIONS] CONTAINER [CONTAINER…]
  2.  
  3. Kill one or more running containers
  4.  
  5. Options:
  6.       –help            Print usage
  7.   -s, –signal string   Signal to send to the container (default "KILL")

docker kill命令将向容器内的主进程发送SIGKILL信号或由–signal指定的任何信号。

注意:ENTRYPOINT和CMD的shell格式是作为/bin/sh -c的子命令运行,这个子命令将接收不到docker kill发送过来的信号。

Docker命令行参考(19) – docker export输出容器文件系统为tar文件

  1. Usage:  docker export [OPTIONS] CONTAINER
  2.  
  3. Export a container’s filesystem as a tar archive
  4.  
  5. Options:
  6.       –help            Print usage
  7.   -o, –output string   Write to a file, instead of STDOUT

docker export命令不会导出与容器关联的数据卷内容。如果数据卷挂载在容器中的一个已存在的目录上,docker export将导出这个目录下的内容,而不是数据卷的内容。

示例

  1. $ docker export red_panda > latest.tar

  1. $ docker export –output="latest.tar" red_panda

Docker命令行参考(18) – docker exec在运行中的容器执行一个命令

  1. Usage:  docker exec [OPTIONS] CONTAINER COMMAND [ARG…]
  2.  
  3. Run a command in a running container
  4.  
  5.   -d, –detach         Detached mode: run command in the background
  6.   –detach-keys        Override the key sequence for detaching a container
  7.   –help               Print usage
  8.   -i, –interactive    Keep STDIN open even if not attached
  9.   –privileged         Give extended privileges to the command
  10.   -t, –tty            Allocate a pseudo-TTY
  11.   -u, –user           Username or UID (format: <name|uid>[:<group|gid>])

docker exec命令在一个运行中的容器执行一个新命令。
当容器的主进程(PID 1)正在运行时,使用docker exec命令执行的命令才执行,并且当容器重启时,此命令不会重启。
如果容器暂停,那么docker exec命令将遇到一个错误:

  1. $ docker pause test
  2. test
  3. $ docker ps
  4. CONTAINER ID        IMAGE               COMMAND             CREATED             STATUS                   PORTS               NAMES
  5. 1ae3b36715d2        ubuntu:latest       "bash"              17 seconds ago      Up 16 seconds (Paused)                       test
  6. $ docker exec test ls
  7. FATA[0000] Error response from daemon: Container test is paused, unpause the container before exec
  8. $ echo $?
  9. 1

示例

  1. $ docker run –name ubuntu_bash –rm -i -t ubuntu bash

这将创建一个名为ubuntu_bash的容器并启动一个Bash会话。

  1. $ docker exec -d ubuntu_bash touch /tmp/execWorks

这会在后台在运行中的容器内创建一个新的文件/tmp/execWorks。

  1. $ docker exec -it ubuntu_bash bash

这会在容器ubuntu_bash中创建一个新的Bash会话。

Docker命令行参考(17) – docker events从服务器获取实时事件

  1. Usage:  docker events [OPTIONS]
  2.  
  3. Get real time events from the server
  4.  
  5. Options:
  6.   -f, –filter value   Filter output based on conditions provided (default [])
  7.       –help           Print usage
  8.       –since string   Show all events created since timestamp
  9.       –until string   Stream events until this timestamp

Docker容器报告如下事件:

  1. attach, commit, copy, create, destroy, detach, die, exec_create, exec_detach, exec_start, export, health_status, kill, oom, pause, rename, resize, restart, start, stop, top, unpause, update

Docker镜像报告如下事件:

  1. delete, import, load, pull, push, save, tag, untag

Docker插件(实验)报告如下事件:

  1. install, enable, disable, remove

Docker数据卷报告如下事件:

  1. create, mount, unmount, destroy

Docker网络报告如下事件:

  1. create, connect, disconnect, destroy

Docker daemon报告如下事件:

  1. reload

–since和–until参数可以是与客户端机器时间相对的Unix时间戳,日期格式时间戳或Go duration字符串(如10m,1h30m)。如果没有提供–since选项,这个命令将只返回新的和/或实时事件。支持日期格式时间戳的格式包括RFC3339Nano, RFC3339, 2006-01-02T15:04:05, 2006-01-02T15:04:05.999999999, 2006-01-02Z07:00和2006-01-02。如果你没有在时间戳后提供时区Z或+-00:00,那么就使用客户端的本地时区。

过滤

过滤标志(-f或–filter)格式是“key=value”。如果要使用多个过滤,传递多个标志(如–filter “foo=bar” –filter “bif=baz”)。
使用相同的过滤多次将处理为OR;例如–filter container=588a23dac085 –filter container=a8f7720b8c22将显示588a23dac085或a8f7720b8c22的容器事件。
使用多个过滤将处理为AND;例如–filter container=588a23dac085 –filter event=start将显示容器为588a23dac085且事件类型为start的事件。
目前支持的过滤有:

  • container (container=)
  • event (event=)
  • image (image=)
  • plugin (experimental) (plugin=)
  • label (label= or label==)
  • type (type=)
  • volume (volume=)
  • network (network=)
  • daemon (daemon=)
  • 示例

    需要启两个shell来演示示例。

    Shell 1:监听事件

    1. $ docker events

    Shell 2:启动和停止容器

    1. $ docker start 4386fb97867d
    2. $ docker stop 4386fb97867d
    3. $ docker stop 7805c1d35632

    Shell 1: 将显示刚才的事件

    1. 2015-05-12T11:51:30.999999999Z07:00 container start 4386fb97867d (image=ubuntu-1:14.04)
    2. 2015-05-12T11:51:30.999999999Z07:00 container die 4386fb97867d (image=ubuntu-1:14.04)
    3. 2015-05-12T15:52:12.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    4. 2015-05-12T15:53:45.999999999Z07:00 container die 7805c1d35632 (image=redis:2.8)
    5. 2015-05-12T15:54:03.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)

    显示从指定时间的过去事件

    1. $ docker events –since 1378216169
    2. 2015-05-12T11:51:30.999999999Z07:00 container die 4386fb97867d (image=ubuntu-1:14.04)
    3. 2015-05-12T15:52:12.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    4. 2015-05-12T15:53:45.999999999Z07:00 container die 7805c1d35632 (image=redis:2.8)
    5. 2015-05-12T15:54:03.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)
    6.  
    7. $ docker events –since ‘2013-09-03’
    8. 2015-05-12T11:51:30.999999999Z07:00 container start 4386fb97867d (image=ubuntu-1:14.04)
    9. 2015-05-12T11:51:30.999999999Z07:00 container die 4386fb97867d (image=ubuntu-1:14.04)
    10. 2015-05-12T15:52:12.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    11. 2015-05-12T15:53:45.999999999Z07:00 container die 7805c1d35632 (image=redis:2.8)
    12. 2015-05-12T15:54:03.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)
    13.  
    14. $ docker events –since ‘2013-09-03T15:49:29’
    15. 2015-05-12T11:51:30.999999999Z07:00 container die 4386fb97867d (image=ubuntu-1:14.04)
    16. 2015-05-12T15:52:12.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    17. 2015-05-12T15:53:45.999999999Z07:00 container die 7805c1d35632 (image=redis:2.8)
    18. 2015-05-12T15:54:03.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)

    以下示例输出在最近3分钟内生成的所有事件,与客户端机器当前时间相关。

    1. $ docker events –since ‘3m’
    2. 2015-05-12T11:51:30.999999999Z07:00 container die 4386fb97867d (image=ubuntu-1:14.04)
    3. 2015-05-12T15:52:12.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    4. 2015-05-12T15:53:45.999999999Z07:00 container die 7805c1d35632 (image=redis:2.8)
    5. 2015-05-12T15:54:03.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)

    过滤事件

    1. $ docker events –filter ‘event=stop’
    2. 2014-05-10T17:42:14.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    3. 2014-09-03T17:42:14.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)
    4.  
    5. $ docker events –filter ‘image=ubuntu-1:14.04’
    6. 2014-05-10T17:42:14.999999999Z07:00 container start 4386fb97867d (image=ubuntu-1:14.04)
    7. 2014-05-10T17:42:14.999999999Z07:00 container die 4386fb97867d (image=ubuntu-1:14.04)
    8. 2014-05-10T17:42:14.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    9.  
    10. $ docker events –filter ‘container=7805c1d35632’
    11. 2014-05-10T17:42:14.999999999Z07:00 container die 7805c1d35632 (image=redis:2.8)
    12. 2014-09-03T15:49:29.999999999Z07:00 container stop 7805c1d35632 (image= redis:2.8)
    13.  
    14. $ docker events –filter ‘container=7805c1d35632’ –filter ‘container=4386fb97867d’
    15. 2014-09-03T15:49:29.999999999Z07:00 container die 4386fb97867d (image=ubuntu-1:14.04)
    16. 2014-05-10T17:42:14.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    17. 2014-05-10T17:42:14.999999999Z07:00 container die 7805c1d35632 (image=redis:2.8)
    18. 2014-09-03T15:49:29.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)
    19.  
    20. $ docker events –filter ‘container=7805c1d35632’ –filter ‘event=stop’
    21. 2014-09-03T15:49:29.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)
    22.  
    23. $ docker events –filter ‘container=container_1’ –filter ‘container=container_2’
    24. 2014-09-03T15:49:29.999999999Z07:00 container die 4386fb97867d (image=ubuntu-1:14.04)
    25. 2014-05-10T17:42:14.999999999Z07:00 container stop 4386fb97867d (image=ubuntu-1:14.04)
    26. 2014-05-10T17:42:14.999999999Z07:00 container die 7805c1d35632 (imager=redis:2.8)
    27. 2014-09-03T15:49:29.999999999Z07:00 container stop 7805c1d35632 (image=redis:2.8)
    28.  
    29. $ docker events –filter ‘type=volume’
    30. 2015-12-23T21:05:28.136212689Z volume create test-event-volume-local (driver=local)
    31. 2015-12-23T21:05:28.383462717Z volume mount test-event-volume-local (read/write=true, container=562fe10671e9273da25eed36cdce26159085ac7ee6707105fd534866340a5025, destination=/foo, driver=local, propagation=rprivate)
    32. 2015-12-23T21:05:28.650314265Z volume unmount test-event-volume-local (container=562fe10671e9273da25eed36cdce26159085ac7ee6707105fd534866340a5025, driver=local)
    33. 2015-12-23T21:05:28.716218405Z volume destroy test-event-volume-local (driver=local)
    34.  
    35. $ docker events –filter ‘type=network’
    36. 2015-12-23T21:38:24.705709133Z network create 8b111217944ba0ba844a65b13efcd57dc494932ee2527577758f939315ba2c5b (name=test-event-network-local, type=bridge)
    37. 2015-12-23T21:38:25.119625123Z network connect 8b111217944ba0ba844a65b13efcd57dc494932ee2527577758f939315ba2c5b (name=test-event-network-local, container=b4be644031a3d90b400f88ab3d4bdf4dc23adb250e696b6328b85441abe2c54e, type=bridge)
    38.  
    39. $ docker events –filter ‘type=plugin’ (experimental)
    40. 2016-07-25T17:30:14.825557616Z plugin pull ec7b87f2ce84330fe076e666f17dfc049d2d7ae0b8190763de94e1f2d105993f (name=tiborvass/no-remove:latest)
    41. 2016-07-25T17:30:14.888127370Z plugin enable ec7b87f2ce84330fe076e666f17dfc049d2d7ae0b8190763de94e1f2d105993f (name=tiborvass/no-remove:latest)

    Docker命令行参考(16) – docker diff查看容器文件系统变更

    1. Usage:  docker diff CONTAINER
    2.  
    3. Inspect changes on a container’s filesystem
    4.  
    5. Options:
    6.       –help   Print usage

    列出在容器的文件系统更改的文件和目录。此命令将列出三类事件:
    1.A – Add
    2.D – Delete
    3.C – Change
    例如:

    1. $ docker diff 7bb0e258aefe
    2.  
    3. C /dev
    4. A /dev/kmsg
    5. C /etc
    6. A /etc/mtab
    7. A /go
    8. A /go/src
    9. A /go/src/github.com
    10. A /go/src/github.com/docker
    11. A /go/src/github.com/docker/docker
    12. A /go/src/github.com/docker/docker/.git
    13. ….

    Docker命令行参考(15) – docker cp在容器和本地文件系统之间复制文件

    1. Usage:  docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH|-
    2.         docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
    3.  
    4. Copy files/folders between a container and the local filesystem
    5.  
    6. Use ‘-‘ as the source to read a tar archive from stdin
    7. and extract it to a directory destination in a container.
    8. Use ‘-‘ as the destination to stream a tar archive of a
    9. container source to stdout.
    10.  
    11. Options:
    12.   -L, –follow-link   Always follow symbol link in SRC_PATH
    13.       –help          Print usage

    docker cp命令复制SRC_PATH的内容到DEST_PATH。可以从容器文件系统复制文件到本地机器或是反过来,从本地文件系统复制文件到容器。如果SRC_PATH或DEST_PATH指定了破折号-,可以从STDIN读取tar归档文件或输出到STDOUT。容器可以是运行或停止状态。SRC_PATH或DEST_PATH可以是文件或目录。

    docker cp命令假设容器paths是相对于容器的根目录的。这意味着初始的左斜杠是可选的;compassionate_darwin:/tmp/foo/myfile.txt和compassionate_darwin:tmp/foo/myfile.txt是一样的。本地机器paths可以是一个绝对的或相对的值。这个命令解析本地机器的相对路径为相对于docker cp运行的当前目录。

    cp命令行为像Unix cp -a命令,递归复制目录及其权限。文件的所有者设置为目标的用户和主用户组。例如,复制到容器的文件以root用户UID:GID创建。复制到本地机器的文件以调用docker cp命令的用户的UID:GID创建。如果指定-L选项,docker cp则跟随在SRC_PATH的软链接。docker cp不会创建DEST_PATH父级目录。

    假设路径分隔符为/,第一个参数为SRC_PATH,第二个为DEST_PATH,它们的行为如下:

    • SRC_PATH指定的是一个文件
      • DEST_PATH不存在
        • 文件保存到DEST_PATH文件
      • DEST_PATH不存在且以/结尾
        • Error condition: the destination directory must exist.
      • DEST_PATH存在且是一个文件
        • 源文件将覆盖目标文件
      • DEST_PATH存在且是一个目录
        • 文件使用原来文件名复制到这个目录
          SRC_PATH
    • SRC_PATH指定的是一个目录
      • DEST_PATH不存在
        • 先创建DEST_PATH这个目录,然后源目录的内容复制到这个目录
      • DEST_PATH存在且是一个文件
        • Error condition: cannot copy a directory to a file
      • DEST_PATH存在且是一个目录
        • SRC_PATH不以/结尾
          • 源目录复制到这个目录
        • SRC_PATH/结尾
          • 源目录的内容将复制到此目录

    根据以上规则,命令要求SRC_PATH和DEST_PATH都存在。如果SRC_PATH是本地的软链接,默认下只复制软链接,不复制它指向的文件。要跟随这个软链接,指定-L选项。:冒号用来分隔CONTAINER和它的路径。

    Docker命令行参考(14) – docker attach附着到一个运行中的容器

    1. Usage: docker attach [OPTIONS] CONTAINER
    2.  
    3. Attach to a running container
    4.  
    5. Options:
    6.       –detach-keys string   Override the key sequence for detaching a container
    7.       –help                 Print usage
    8.       –no-stdin             Do not attach STDIN
    9.       –sig-proxy            Proxy all received signals to the process (default true)

    docker attach命令可以通过使用容器的ID或名称来附着到一个运行中的容器,来查看它的输出或以交互方式控制它。可以同时多次附着同一个容器进程,屏幕共享风格或快速查看进程的进度。

    要停止一个容器,使用CTRL-c。此键序列向容器发送SIGKILL信号。如果–sig-proxy为true(默认),CTRL-c发送SIGINT到容器。可以使用CTRL-p CTRL-q键序列与容器分离。
    当附着到一个启用tty的容器时,将禁止重定向docker attach命令的标准输入。

    当客户諯使用docker attach连接到容器的stdio时,docker使用大约1MB的内存缓冲来最大化应用的吞吐量。如果填充了缓冲,API连接的速度将开始影响进程输出的写入速度,因为如果API连接速度慢时,缓冲区无法及时释放,导致进程等待缓冲区。这里其它应用如SSH类似。所以,不推荐使用attach命令来查看那些运行在前台,产生大量输出进程的日志。而是用户应该使用docker logs命令来查看这些日志。

    示例

    1. $ docker run -d –name topdemo ubuntu /usr/bin/top -b
    2. $ docker attach topdemo
    3. top – 02:05:52 up  3:05,  0 users,  load average: 0.01, 0.02, 0.05
    4. Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
    5. Cpu(s):  0.1%us,  0.2%sy,  0.0%ni, 99.7%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    6. Mem:    373572k total,   355560k used,    18012k free,    27872k buffers
    7. Swap:   786428k total,        0k used,   786428k free,   221740k cached
    8.  
    9. PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    10.  1 root      20   0 17200 1116  912 R    0  0.3   0:00.03 top
    11.  
    12.  top – 02:05:55 up  3:05,  0 users,  load average: 0.01, 0.02, 0.05
    13.  Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
    14.  Cpu(s):  0.0%us,  0.2%sy,  0.0%ni, 99.8%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    15.  Mem:    373572k total,   355244k used,    18328k free,    27872k buffers
    16.  Swap:   786428k total,        0k used,   786428k free,   221776k cached
    17.  
    18.    PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    19.        1 root      20   0 17208 1144  932 R    0  0.3   0:00.03 top
    20.  
    21.  
    22.  top – 02:05:58 up  3:06,  0 users,  load average: 0.01, 0.02, 0.05
    23.  Tasks:   1 total,   1 running,   0 sleeping,   0 stopped,   0 zombie
    24.  Cpu(s):  0.2%us,  0.3%sy,  0.0%ni, 99.5%id,  0.0%wa,  0.0%hi,  0.0%si,  0.0%st
    25.  Mem:    373572k total,   355780k used,    17792k free,    27880k buffers
    26.  Swap:   786428k total,        0k used,   786428k free,   221776k cached
    27.  
    28.  PID USER      PR  NI  VIRT  RES  SHR S %CPU %MEM    TIME+  COMMAND
    29.       1 root      20   0 17208 1144  932 R    0  0.3   0:00.03 top
    30. ^C$
    31. $ echo $?
    32. 0
    33. $ docker ps -a | grep topdemo
    34. 7998ac8581f9        ubuntu:14.04        "/usr/bin/top -b"   38 seconds ago      Exited (0) 21 seconds ago                          topdemo

    在第二个示例中,可以看到bash进程返回的退出代码由docker attach命令返回给其调用者:

    1. $ docker run –name test -d -it debian
    2. 275c44472aebd77c926d4527885bb09f2f6db21d878c75f0a1c212c03d3bcfab
    3. $ docker attach test
    4. root@f38c87f2a42d:/# exit 13
    5. exit
    6. $ echo $?
    7. 13
    8. $ docker ps -a | grep test
    9. 275c44472aeb        debian:7            "/bin/bash"         26 seconds ago      Exited (13) 17 seconds ago                         test

    Docker命令行参考(13) – docker tag给镜像做一个标签

    1. Usage:  docker tag IMAGE[:TAG] IMAGE[:TAG]
    2.  
    3. Tag an image into a repository
    4.  
    5. Options:
    6.       –help   Print usage

    一个镜像名称由以斜杠分隔的名称组件组成,及可选的主机名前缀。主机名必须符合标准的DNS规则,不过不能包含下划线。如果名称存在主机名,可以在其后面加一个端口号,格式为:8080。没有不存在主机名,命令就使用默认的docker公共registry registry-1.docker.io。名称组件可以包含小写字符,数字和分隔符。分隔符可以是句点,一个或两个下划线或一个或多个破折号。
    一个名称组件不能以分隔符开始或结束。
    tag名称可以包含小写字符和大写字符,数字,下划线,名点和破折号。tag名称不能以名点或破折号开头,且最大支持128个字符。

    示例

    通过ID tag镜像

    下面是tag一个id为0e5574283393的本地镜像到“fedora”存储库,tag名称version1.0:

    1. docker tag 0e5574283393 fedora/httpd:version1.0

    通过名称tag镜像

    使用名称“httpd” tag本地镜像到存储库”fedora”,且其tag名为version1.0

    1. docker tag httpd fedora/httpd:version1.0

    注意由于引用httpd的tag名称没有指定,默认引用httpd:latest。

    通过名称和tag名称tag一个镜像

    为名称为httpd和tag名称为test的本地镜像做标签,其存储库为fedora,标签名为version1.0.test。

    1. docker tag httpd:test fedora/httpd:version1.0.test

    tag一个镜像到私有的存储库

    要推送一个镜像到一个私有的registry,而不是公共的docker registry,必须指定一个registry主机名和端口来tag此镜像。

    1. docker tag 0e5574283393 myregistryhost:5000/fedora/httpd:version1.0

    Docker命令行参考(12) – docker rmi删除镜像

    1. Usage:  docker rmi [OPTIONS] IMAGE [IMAGE…]
    2.  
    3. Remove one or more images
    4.  
    5. Options:
    6.   -f, –force      Force removal of the image
    7.       –help       Print usage
    8.       –no-prune   Do not delete untagged parents

    可以使用镜像的短和长ID,它的digest来删除它。如果一个镜像有一个或多个tag引用它,在删除这个镜像之前必须先删除它们。当通过tag删除镜像时,它的digest的引用会自动删除。

    1. $ docker images
    2. REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    3. test1                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
    4. test                      latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
    5. test2                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
    6.  
    7. $ docker rmi fd484f19954f
    8. Error: Conflict, cannot delete image fd484f19954f because it is tagged in multiple repositories, use -f to force
    9. 2013/12/11 05:47:16 Error: failed to remove one or more images
    10.  
    11. $ docker rmi test1
    12. Untagged: test1:latest
    13. $ docker rmi test2
    14. Untagged: test2:latest
    15.  
    16. $ docker images
    17. REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    18. test                      latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
    19. $ docker rmi test
    20. Untagged: test:latest
    21. Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

    如果使用-f参数和指定镜像的短或长ID,那么这个命令将untag和删除所有匹配指定ID的镜像。

    1. $ docker images
    2. REPOSITORY                TAG                 IMAGE ID            CREATED             SIZE
    3. test1                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
    4. test                      latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
    5. test2                     latest              fd484f19954f        23 seconds ago      7 B (virtual 4.964 MB)
    6.  
    7. $ docker rmi -f fd484f19954f
    8. Untagged: test1:latest
    9. Untagged: test:latest
    10. Untagged: test2:latest
    11. Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8

    通过digest拉取的镜像没有与之关联的tag:

    1. $ docker images –digests
    2. REPOSITORY                     TAG       DIGEST                                                                    IMAGE ID        CREATED         SIZE
    3. localhost:5000/test/busybox    <none>    sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf   4986bf8c1536    9 weeks ago     2.43 MB

    通过它的digest删除一个镜像:

    1. $ docker rmi localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
    2. Untagged: localhost:5000/test/busybox@sha256:cbbf2f9a99b47fc460d422812b6a5adff7dfee951d8fa2e4a98caa0382cfbdbf
    3. Deleted: 4986bf8c15363d1c5d15512d5266f8777bfba4974ac56e3270e7760f6f0a8125
    4. Deleted: ea13149945cb6b1e746bf28032f02e9b5a793523481a0a18645fc77ad53c4ea2
    5. Deleted: df7546f9f060a2268024c8a230d8639878585defcc1bc6f79d2728a13957871b

    Docker命令行参考(11) – docker load从tar归档文件或STDIN导入镜像

    1. Usage:  docker load [OPTIONS]
    2.  
    3. Load an image from a tar archive or STDIN
    4.  
    5. Options:
    6.       –help           Print usage
    7.   -i, –input string   Read from tar archive file, instead of STDIN.
    8.                        The tarball may be compressed with gzip, bzip, or xz
    9.   -q, –quiet          Suppress the load output but still outputs the imported images

    docker load用来导入由docker save备份的镜像。

    1. $ docker images
    2. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    3. $ docker load < busybox.tar.gz
    4. # […]
    5. Loaded image: busybox:latest
    6. $ docker images
    7. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    8. busybox             latest              769b9341d937        7 weeks ago         2.489 MB
    9. $ docker load –input fedora.tar
    10. # […]
    11. Loaded image: fedora:rawhide
    12. # […]
    13. Loaded image: fedora:20
    14. # […]
    15. $ docker images
    16. REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
    17. busybox             latest              769b9341d937        7 weeks ago         2.489 MB
    18. fedora              rawhide             0d20aec6529d        7 weeks ago         387 MB
    19. fedora              20                  58394af37342        7 weeks ago         385.5 MB
    20. fedora              heisenbug           58394af37342        7 weeks ago         385.5 MB
    21. fedora              latest              58394af37342        7 weeks ago         385.5 MB