[gamaxwin@srv-xjwy-dns-node01 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 3fa822599e10 11 days ago 204MB
ubuntu latest 20c44cd7596f 3 weeks ago 123MB
可以看到,在列出的信息栏中,有以下几个字段信息:
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 3fa822599e10 11 days ago 204MB
ubuntu latest 20c44cd7596f 3 weeks ago 123MB
ubuntu prod 20c44cd7596f 3 weeks ago 123MB
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker rmi 20c44cd7596f
Error response from daemon: conflict: unable to delete 3fa822599e10 (must be forced) - image is being used by stopped container 20c44cd7596f
此时我们使用 “-f” 强制删除,会发现镜像id20c44cd7596f对应的所有的tag以及镜像本身文件全部删除,结果如下:
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker rmi -f 20c44cd7596f
Untagged: ubuntu:latest
Untagged: ubuntu:prod
Untagged: ubuntu@sha256:7c67a2206d3c04703e5c23518707bdd4916c057562dd51c74b99b2ba26af0f79
Deleted: sha256:20c44cd7596ff4807aef84273c99588d22749e2a7e15a7545ac96347baa65eda
Deleted: sha256:928cadf24454047a7a1b8e8d034a539e882ed904d6627b343e2abcd338ae0123
Deleted: sha256:1f7b04df09e72e9b94e923567a168b438d195c4c610a335ed7320cc6dea93c3f
Deleted: sha256:289566599b45e8e2a7264923d3481c6e0e7460232a4e0ed1512528272fb15c70
Deleted: sha256:2eb2bdc452f61ae4703cb67be52a4d595265cecb257f3210647ea1d0bf84a549
Deleted: sha256:788ce2310e2fdbbf81fe21cbcc8a44da4cf648b0339b09c221abacb4cd5fd136
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
centos latest 3fa822599e10 11 days ago 204MB
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
acdd2c49d9d8 centos "/bin/bash" 47 hours ago Exited (0) 47 hours ago quizzical_kalam
[gamaxwin@srv-xjwy-dns-node01 ~]$
我们尝试去删除centos镜像,会发现报如下错误:
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker rmi 3fa822599e10
Error response from daemon: conflict: unable to delete 3fa822599e10 (must be forced) - image is being used by stopped container acdd2c49d9d8
接下来使用“-f”参数强制删除,此时看到centos镜像已经被删除,结果如下:
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker rmi -f 3fa822599e10
Untagged: centos:latest
Untagged: centos@sha256:3b1a65e9a05f0a77b5e8a698d3359459904c2a354dc3b25ae2e2f5c95f0b3667
Deleted: sha256:3fa822599e10c5f2080dcf647068c72022b111d31bbec0c5adb8a96e7eb5379b
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
注意:这里不推介使用-f参数强制删除一个存在容器依赖的镜像,因为这样造成一些文件遗留问题,正确的方式是:先删除依赖该镜像所有的容器,再删根据该镜像id删除该镜像本身。
2.5 镜像创建
创建镜像方法有三种:1.基于已有的镜像创建、2.基于本地模板导入,3.基于dockerfile创建;这里主要讲到前两种方法创建,基于dockerfile创建后面会讲到。
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker run -it centos:latest /bin/bash
[root@e6aee7c0732e /]# touch test
[root@e6aee7c0732e /]# exit
exit
关于修改内容可以使用docker diff查看:它可以列出容器内发生变化的文件和目录。这些变化包括添加(A-add)、删除(D-delete)、修改(C-change),如下所示:
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker diff e6aee7c0732e
C /root
A /root/.bash_history
A /test
此时容器的id号为:e6aee7c0732e,下面使用docker commit 重新提交一个镜像,如下所示:
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker commit -m "add a new file" -a "docker" e6aee7c0732e test
sha256:efb2aa048732df37f82edb1b4da7cd22a1024c34a3575cee792728bb33cd4ca3
[gamaxwin@srv-xjwy-dns-node01 ~]$ docker images
REPOSITORY TAG IMAGE ID CREATED SIZE
test latest efb2aa048732 8 seconds ago 204MB
centos latest 3fa822599e10 11 days ago 204MB
发现新产生了一个镜像id:efb2aa048732,并且仓库为test,仔细观察发现基于已有的容器创建的镜像,不管仓库名还是镜像id或者tag都是全新的,也就是说这个方式创建的镜像是基于AUFS层创建的