Docker 镜像快速入门


#Docker#


获取镜像到本地

比如我们获取 ubuntu 18.04 的镜像:

$ docker pull ubuntu:18.04

查看本地的所有镜像

$ docker images
REPOSITORY                          TAG                 IMAGE ID            CREATED             SIZE
ubuntu                              18.04               47b19964fb50        3 days ago          88.1MB

每个镜像用了5个元数据描述:仓库(REPOSITORY)、标签(TAG)、镜像ID(IMAGE ID)、存储占用空间(SIZE)。

一个镜像只有一个ID,不同镜像的ID不会相同。一个镜像可以有多个标签(TAG)。

为镜像增加标签

可以通过镜像ID,或者 仓库名+标签 指定新仓库名和新标签。

$ docker tag 47b19964fb50 ubuntu:18.04-v2
$ docker tag ubuntu:18.04 ubuntu:18.04-v3
$ docker tag ubuntu:18.04 new-ubuntu:18.04

再次查看本地所有镜像:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
new-ubuntu          18.04               47b19964fb50        3 days ago          88.1MB
ubuntu              18.04               47b19964fb50        3 days ago          88.1MB
ubuntu              18.04-v2            47b19964fb50        3 days ago          88.1MB
ubuntu              18.04-v3            47b19964fb50        3 days ago          88.1MB

可以看到,这几个镜像的 ID 是相同的。其实就是同一个镜像,但是 仓库名和标签不同。

用仓库+标签删除镜像

在上面的例子里,我们为 ubuntu 18.04 镜像创建了多个仓库名+标签 ,我们也可以删除 仓库名+标签 的形式删除镜像。如果一个镜像有多个仓库名+标签 ,需要全部删除后,才会真正将镜像删除。下面是一个例子,因为镜像没有被删除,所以命令执行结果是Untagged 。

$ docker image rm new-ubuntu:18.04
Untagged: new-ubuntu:18.04

我们依次删除该镜像的各个标签:

$ docker image rm ubuntu:18.04
Untagged: ubuntu:18.04
$ docker image rm ubuntu:18.04-v2
Untagged: ubuntu:18.04-v2
$ docker image rm ubuntu:18.04-v3
Untagged: ubuntu:18.04-v3
Untagged: ubuntu@sha256:7a47ccc3bbe8a451b500d2b53104868b46d60ee8f5b35a24b41a86077c650210
Deleted: sha256:47b19964fb500f3158ae57f20d16d8784cc4af37c52c49d3b4f5bc5eede49541
Deleted: sha256:d4c69838355b876cd3eb0d92b4ef27b1839f5b094a4eb1ad2a1d747dd5d6088f
Deleted: sha256:1c29a32189d8f2738d0d99378dc0912c9f9d289b52fb698bdd6c1c8cd7a33727
Deleted: sha256:d801a12f6af7beff367268f99607376584d8b2da656dcd8656973b7ad9779ab4
Deleted: sha256:bebe7ce6215aee349bee5d67222abeb5c5a834bbeaa2f2f5d05363d9fd68db41

最后一次删除时,出现了Deleted的字样,说明镜像被删除了。

用镜像ID删除镜像

使用 docker image rm <image id> 可以删除镜像。例如,ID 为 47b19964fb50 的镜像有两个仓库名+标签:

$ docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
new-ubuntu          18.04               47b19964fb50        3 days ago          88.1MB
ubuntu              18.04               47b19964fb50        3 days ago          88.1MB

尝试删除,但是删除失败:

$ docker image rm 47b19964fb50
Error response from daemon: conflict: unable to delete 47b19964fb50 (must be forced) - image is referenced in multiple repositories

因为有多个仓库名+标签指向同一个镜像,所以要用 -f 参数强制删除:

$ docker image rm -f 47b19964fb50

执行后,docker images 执行结果中便没有47b19964fb50 这个镜像了。

也可以用下面的命令删除:

$ docker rmi -f 47b19964fb50

( 本文完 )