首页 > 其他分享 >docker 容器和镜像的清理

docker 容器和镜像的清理

时间:2022-11-16 17:59:05浏览次数:78  
标签:容器 prune 删除 清理 镜像 docker

docker 容器和镜像的清理

环境:本地虚拟机 ubuntu 20.04

背景

根目录磁盘空间不多,就只剩5个G左右了,操作需要,涉及到频繁创建/删除容器, 发现每创建一个容器,在删除后,磁盘空间并没有恢复。久而久之。根目录就满了。

docker 空间占用查看

yyx@ubuntu64:/$ docker system df
TYPE            TOTAL     ACTIVE    SIZE      RECLAIMABLE
Images          4         4         2.06GB    0B (0%)
Containers      4         3         598.1kB   0B (0%)
Local Volumes   39        3         5.854GB   5.325GB (90%)
Build Cache     0         0         0B        0B

虚拟机内实际运行的只有四个容器,但是这里显示容器卷有39个

$ docker system df -v 命令可以进一步查看空间占用细节,以确定是哪个镜像、容器或本地卷占用过高空间

清理方法

# 删除无用卷
docker volume prune 

删除后再次查看,空间即释放掉了。

其他清理容器/镜像的方法

1. 自动清理命令

# 对空间进行自动清理
docker system prune
"""
该命令所清理的对象如下:
已停止的容器
未被任何容器使用的卷
未被任何容器所关联的网络
所有悬空的镜像
"""

docker system prune后可以加额外的参数,如:
docker system prune -a : 一并清除所有未被使用的镜像和悬空镜像。
docker system prune -f : 用以强制删除,不提示信息

另外除了system级别的,还有针对容器或是镜像级别的删除命令:

docker image prune:删除悬空的镜像。
# 悬空镜像(dangling image):未配置任何Tag(也就是无法被引用)的镜像。通常是由于镜像编译过程中未指定-t参数配置Tag导致的

docker container prune:删除无用的容器。
      --默认情况下docker container prune命令会清理掉所有处于stopped状态的容器
      --如果不想那么残忍统统都删掉,也可以使用--filter标志来筛选出不希望被清理掉的容器。例子:清除掉所有停掉的容器,但24内创建的除外:
      --$ docker container prune --filter "until=24h"  

docker volume prune:删除无用的卷。
docker network prune:删除无用的网络

2. 手动清除

对于悬空镜像和未使用镜像可以使用手动进行个别删除:
1、删除所有悬空镜像,不删除未使用镜像:
docker rmi $(docker images -f "dangling=true" -q)

2、删除所有未使用镜像和悬空镜像
docker rmi $(docker images -q)

3、清理卷
如果卷占用空间过高,可以清除一些不使用的卷,包括一些未被任何容器调用的卷(-v 详细信息中若显示 LINKS = 0,则是未被调用):
删除所有未被容器引用的卷:
docker volume rm $(docker volume ls -qf dangling=true)

4、容器清理
如果发现是容器占用过高的空间,可以手动删除一些:
删除所有已退出的容器:
docker rm -v $(docker ps -aq -f status=exited)
删除所有状态为dead的容器
docker rm -v $(docker ps -aq -f status=dead)

文章参考:https://www.cnblogs.com/mr-wuxiansheng/p/11412606.html

标签:容器,prune,删除,清理,镜像,docker
From: https://www.cnblogs.com/yyx0417/p/16896806.html

相关文章

  • docker报错Got permission denied while trying to connect to the Docker daemon soc
    报错内容GotpermissiondeniedwhiletryingtoconnecttotheDockerdaemonsocketatunix:///var/run/docker.sock:Get"http://%2Fvar%2Frun%2Fdocker.sock/v1.......
  • docker docker和container的关系
    目录dockerdocker和container的关系命令区分常用命令文档参考dockerdocker和container的关系docker由docker-client,dockerd,containerd,docker-shim,runc组成,所......
  • docker
    初步认识Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可以可移植的镜像中,然后发布到任何流行的linux或者Windows操作系统的机器上,也可以......
  • 【Docker】容器使用规范--安全挂载建议
    容器挂载过程和安全挂载建议 绑定挂载本文所提到的挂载主要指绑定挂载(bindmount),即通过-v/xx/xx:/xx/xx和--mounttype=bind,xxx,xxx两种方式设置的容器挂载(其余doc......
  • Almalinux安装部署kubesphere容器云平台
    一、介绍AlmaLinux是一个开源的、社区驱动的项目,旨在填补CentOS稳定版本消亡所留下的空白。AlmaLinux是RHEL8的一个1:1二进制兼容的分支,它是由有丰富经验的CloudLinuxOS......
  • Docker图形化管理工具-Protainer
    目录1、简介2、部署2.1单节点部署:2.2compose部署:3、登入页面1、简介Portainer是一款基于GO语言开发的轻量级容器图形化管理工具,图形化管理容器、镜像、网络、数据卷、大......
  • docker 安装postgresql
    docker中安装创建postgresql容器dockerrun-d-p5432:5432--namepostgresql-vpgdata:/var/lib/postgresql/data-ePOSTGRES_PASSWORD=123456postgres创建pg......
  • 【Mysql】数据库主从搭建-基于docker
    后台可回复【1024】即可获取相关宝藏内容分享 :) 为什么基于Docker搭建?资源有限虚拟机搭建对机器配置有要求,并且安装mysql步骤繁琐一台机器上可以运行多个Docker容器Docker......
  • 【docker】docker虚拟容器的使用大全
    Docker容器详解Docker是基于Go语言开发的开源应用容器引擎,遵从ApacheLicence2.0协议,可以让开发者打包应用以及应用的依赖包到一个可移植的容器中,然后发布到各种发行版本的......
  • 16_5_docker-compose
    DockerComposeDockerCompose是用来做Docker的多容器控制,是一个用来把Docker自动化的东西。一、安装DockerCompose#Compose目前已经完全支持Linux、MacOS和W......