如何删除Docker镜像、容器和持久卷
如何删除Docker镜像、容器和持久卷Docker目录说明删除全部没用的或Dangling的镜像、容器、持久卷和网络删除Docker镜像删除一个或多个指定的镜像删除Dangling镜像根据模式匹配删除镜像删除全部镜像删除Docker容器删除指定的一个或多个容器在容器退出后自动删除容器删除全部已经退出的容器删除符合多个条件的容器根据模式匹配删除容器删除全部容器...
如何删除Docker镜像、容器和持久卷
使用Docker后,Server上累积越来越多没用的Docker镜像、容器和持久卷,会占用大量的磁盘空间。
下面描述了如何通过Docker命令来删除Docker镜像、容器和持久卷。
Docker目录说明
在Docker root directory下(通常是/var/lib/docker, 或通过docker info | grep -i root
查看)存在以下目录:
以Docker 17.03.2为例:
docker
├── containers # 存放Docker容器,子目录名为CONTAINTER_ID
├── image
├── network
├── overlay # 存放Docker镜像的真正数据,占用磁盘空间最大
├── plugins
├── swarm
├── tmp
├── trust
└── volumes # 存放持久卷信息
可以通过运行du sh *
查看上面各个目录占用磁盘空间大小。
删除全部没用的或Dangling的镜像、容器、持久卷和网络
Dangling 意为没被任何一个容器所关联。
删除全部Dangling的镜像、容器、持久卷和网络:
docker system prune
如果想删除全部已经停止掉的容器和全部没用的镜像(不仅仅是Dangling的),加上-a
参数:
docker system prune -a
删除Docker镜像
删除一个或多个指定的镜像
列出全部Docker镜像:
docker images -a
删除指定的一个或多个Docker镜像:
docker rmi IMAGE [IMAGE...]
删除Dangling镜像
Dangling镜像指的是镜像的层没有属于任何一个打上标签的镜像。可以为Dangling镜像打上标签,或将它们删除。
列出Dangling镜像:
docker images -f dangling=true
删除Dangling镜像:
docker images purge
根据模式匹配删除镜像
通过docker images
和grep
命令可以根据镜像名称和标签来筛选Docker镜像,再加上awk
命令就可以来删除符合条件的Docker镜像。
列出镜像名包含k8s.gcr.io的镜像:
docker images -a | grep "k8s.gcr.io"
列出镜像名包含k8s.gcr.io,且镜像标签为v1.10.3的镜像:
docker images -a | grep "k8s.gcr.io" | grep "v1.10.3"
删除镜像名称包含busybox的镜像(一个或多个):
docker images -a | grep "busybox" | awk '{print $3}' | xargs docker rmi
其中awk '{print $3}'
用来截取第3列的IMAGE_ID,然后再将IMAGE_ID作为参数传给docker rmi
来删除指定的镜像。
删除全部镜像
docker images
命令支持通过-a
参数列出全部Docker镜像,并支持通过-q
只返回镜像的IMAGE_ID。
列出全部镜像:
docker images -a
删除全部镜像:
docker rmi $(docker images -a -q)
删除Docker容器
删除指定的一个或多个容器
docker ps
支持通过-a
参数列出全部Docker容器(包括已经停止的容器):
docker ps -a
删除指定的一个或多个容器:
docker rm CONTAINER_NAME_or_CONTAINER_ID [CONTAINER_NAME_or_CONTAINER_ID]
在容器退出后自动删除容器
在docker run
命令中通过-rm
命令设置在容器退出后自动删除该容器:
docker run -rm IMAGE
删除全部已经退出的容器
在docker ps
命令中通过-f
参数可以来过滤查询出来的容器。
列出全部已经退出的容器:
docker ps -a -f status=exited
删除全部已经退出的容器:
docker rm $(docker ps -a -f status=exited -q)
删除符合多个条件的容器
列出状态为exited或created的容器:
docker ps -a -f status=exited -f status=created
删除状态为exited或created的容器:
docker rm $(docker ps -a -f status=exited -f status=created -q)
根据模式匹配删除容器
通过docker ps
和 grep
来筛选Docker容器,再加上awk
命令就可以来删除符合条件的Docker容器。
列出关键字包含busybox的容器:
docker ps -a | grep "busybox"
删除关键字包含busybox的容器(一个或多个):
# 停止容器
docker ps | grep "busybox" | awk '{print $1}' | xargs docker stop
# 删除容器
docker ps -a | grep "busybox" | awk '{print $1}' | xargs docker rm
其中awk '{print $1}'
用来截取第1列的CONTAINER_ID,然后再将CONTAINER_ID作为参数传给docker stop
来停止容器,传给docker rm
来删除容器。
删除全部容器
列出全部容器:
docker ps -a
停止并删除全部容器:
docker stop $(docker ps -q)
docker rm $(docker ps -a -q)
删除持久卷
删除一个或多个指定的持久卷
列出持久卷:
docker volume ls
删除持久卷:
docker volume rm VOLUME [VOLUME...]
删除Dangling持久卷
Dangling持久卷就是没有被任何容器关联的持久卷。
列出Dangling持久卷:
docker volume ls -f dangling=true
删除Dangling持久卷:
docker volume prune
删除容器及其持久卷
删除容器及其持久卷(只对未命名持久卷有效):
docker rm -v CONTAINER_NAME
参考文档
更多推荐
所有评论(0)