如何删除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 imagesgrep 命令可以根据镜像名称和标签来筛选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 psgrep 来筛选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
    点赞
  • 4
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值