文章目录
随着我们使用 Docker 的次数越来越多,我们电脑里面可能已经存在很多 Docker 镜像,大量的镜像会占据大量的存储空间,所有很有必要清理一些不需要的镜像。
镜像的删除
在删除镜像之前,我们可以看下系统里面都有哪些镜像:
[iteblog@iteblog.com ~]# docker images REPOSITORY TAG IMAGE ID CREATED SIZE hello-world latest bf756fb1ae65 4 months ago 13.3kB iteblog/hbase-phoenix-docker 1.0 978d21a23ec3 6 months ago 1.55GB iteblog/hbase-docker 1.0 677d048ab37f 6 months ago 840MB
Docker 为我们提供了很多用于删除镜像的方法,具体如下。
docker image rm
这个命令可以删除一个或多个镜像,语法如下:
docker image rm [OPTIONS] IMAGE [IMAGE...]
有些镜像因为依赖关系可能删不了,这时候可以加上 --force
或 -f
强制删除。比如我们想删除上面的 hello-world 这个镜像,可以如下操作:
[iteblog@iteblog.com ~]# docker image rm bf756fb1ae65 Untagged: hello-world:latest Untagged: hello-world@sha256:8e3114318a995a1ee497790535e7b88365222a21771ae7e53687ad76563e8e76 Deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b Deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63 [iteblog@iteblog.com ~]#
提供镜像的 IMAGE ID
即可删除对应镜像。
docker rmi
这个命令和上面一样,也是删除一个或多个镜像,语法如下:
docker rmi [OPTIONS] IMAGE [IMAGE...]
例子:
[iteblog@iteblog.com ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test1 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB) test latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB) test2 latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB) [iteblog@iteblog.com ~]$ docker rmi test1:latest Untagged: test1:latest [iteblog@iteblog.com ~]$ docker rmi test2:latest Untagged: test2:latest [iteblog@iteblog.com ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE test latest fd484f19954f 23 seconds ago 7 B (virtual 4.964 MB) [iteblog@iteblog.com ~]$ docker rmi fd484f19954f Untagged: test:latest Deleted: fd484f19954f4920da7ff372b5067f5b7ddb2fd3830cecd17b96ea9e286ba5b8
docker image prune
如果想移除所有没有使用的镜像,可以使用这个命令。没有使用的镜像就是没有和如何容器关联的镜像。语法如下:
docker image prune [OPTIONS]
例子:
[iteblog@iteblog.com ~]$ docker image prune -a WARNING! This will remove all images without at least one container associated to them. Are you sure you want to continue? [y/N] y Deleted Images: untagged: iteblog/hbase-docker:1.0 untagged: iteblog/hbase-docker@sha256:fe3e4159ee69894b284e489a6593f0c036b64672756f5f6e94c00a584df8b7a9 deleted: sha256:677d048ab37fac3d5548daaae49a668246acce5300ff7dc7f64ef09397e08ba4 untagged: hello-world:latest untagged: hello-world@sha256:6a65f928fb91fcfbc963f7aa6d57c8eeb426ad9a20c7ee045538ef34847f44f1 deleted: sha256:bf756fb1ae65adf866bd8c456593cd24beb6a0a061dedf42b26a993176745f6b deleted: sha256:9c27e219663c25e0f28493790cc0b88bc973ba3b1686355f221c38a36978ac63 Total reclaimed space: 13.34kB [iteblog@iteblog.com ~]$ docker images REPOSITORY TAG IMAGE ID CREATED SIZE iteblog/hbase-phoenix-docker 1.0 978d21a23ec3 6 months ago 1.55GB [root@iZ2zehs1vcgddrwqz1w2xhZ ~]#
本文中的 iteblog/hbase-phoenix-docker
有对应的容器打开,所有没有被删除。当然,你也可以加上 --filter
来过滤出满足条件的镜像,然后删除它,具体可以参见 这里。当然,删除所有没有使用的镜像也可以使用下面命令:
[iteblog@iteblog.com ~]$ docker rmi -f $(docker images -aq) Untagged: iteblog/hbase-phoenix-docker:1.0 Untagged: iteblog/hbase-phoenix-docker@sha256:c1126991c0c485dfd9c59f161ce2ed0c3f43fbe9f596f6a6f4e028897774bf12 Deleted: sha256:978d21a23ec3bf88ae37de8f5bd43cc23484eba1dbc5abb50fc6ae6f1b46dea0
批量删除tag为none的image
[iteblog@iteblog.com ~]$ docker images | grep none | awk '{print $3}' | xargs docker rmi
容器删除
同样,我们可以使用下面命令查看出系统中所有的容器,包括正在运行或者已经停止的:
[iteblog@iteblog.com ~]$ docker ps -a CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 6c9124dcaa28 iteblog/hbase-phoenix-docker:1.0 "/usr/bin/supervisord" 9 minutes ago Up 9 minutes 2181/tcp, 8765/tcp, 60000/tcp, 60010/tcp, 60020/tcp, 60030/tcp boring_elbakyan
docker container rm
这个命令用于删除一个或多个容器,语法如下:
docker container rm [OPTIONS] CONTAINER [CONTAINER...]
[iteblog@iteblog.com ~]$ docker container rm 6c9124dcaa28 -f 6c9124dcaa28
docker rm
这个命令和上面一样,也是删除一个或多个容器,语法如下:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
例子:
[iteblog@iteblog.com ~] docker rm abdf6f8d70fc -f abdf6f8d70fc
docker container prune
这个命令用于删除所有已经 stopped 的容器,语法如下:
docker container prune [OPTIONS]
例子:
[iteblog@iteblog.com ~] $ docker container prune WARNING! This will remove all stopped containers. Are you sure you want to continue? [y/N] y Deleted Containers: d23b5611cae58fd6845f528f997357a642d74e8f2076e60d38405fdec89ab6a2 Total reclaimed space: 67.39MB
和 docker image prune
命令一样,也支持 --filter
来过滤出满足条件的容器,然后删除它,具体可以参见这里。当然,删除所有已经停止的镜像也可以使用下面命令:
[iteblog@iteblog.com ~] $ docker ps -a | grep 'Exited' | awk '{print $1}' | xargs docker stop | xargs docker rm 1653167d8fdf
参考:
https://docs.docker.com/engine/reference/commandline/rmi/
https://docs.docker.com/engine/reference/commandline/rm/
https://docs.docker.com/engine/reference/commandline/container_rm/
https://docs.docker.com/engine/reference/commandline/image_rm/
https://docs.docker.com/engine/reference/commandline/system_prune/
https://docs.docker.com/engine/reference/commandline/image_prune/
https://docs.docker.com/engine/reference/commandline/container_prune/
原创文章版权归过往记忆大数据(过往记忆)所有,未经许可不得转载。
本文链接: 【Docker 入门教程:镜像和容器删除】(https://www.iteblog.com/archives/9799.html)