当前位置:   article > 正文

docker小技巧-清理未使用空间_docker volume prune

docker volume prune

如果你大量使用 Docker,它会占用很多硬盘空间。本文教你如何彻底清理 Docker,包括清理容器文件、镜像文件、networks数据、虚拟磁盘等等。

Docker不对您的系统进行配置更改。但是它可以使用大量的磁盘空间。。使用它一段时间,您可能会震惊地看到一些可怕的使用统计数据返回时,输入:

docker system df
  • 1

docker小技巧-清理未使用空间

  • 可以看到镜像有13个镜像,10 个容器 ,10个活跃。占991.5MB内存,可回收( reclaimable)302.9MB(30%)内存

  • 幸运的是,Docker允许您通过命令回收不使用的镜像、容器和volumes的磁盘空间。

手动清理

  • 要安全地移除停止的容器、未使用的networks和dangling images ,最好经常手动的运行以下命令:
docker system prune
  • 1
  • 一个稍微有点风险的选择是:
docker system prune -a
  • 1

这也会删除与正在运行的容器没有关联的任何镜像。这可能有点极端,但Docker会重新下载它需要的任何镜像。第一次尝试会稍微慢一点,但是镜像会被缓存以供以后使用。

删除特定项的其他方法。

image收回

Docker镜像是应用程序(如web服务器、语言运行库或数据库管理系统)的磁盘快照。你可以通过输入:

docker image ls -a
  • 1
  • 删除Docker镜像可以输入:
docker image rm <name_or_id>
  • 1
docker images -a
docker rmi <name_or_id>
  • 1
  • 2

任意数量的镜像都可以添加到这个命令中-用一个空格字符分隔它们。

容器清理

Docker容器是镜像的一个正在运行的实例,并且可以从同一个实例启动任意数量的容器。容器通常很小,因为它们是无状态的,并且引用镜像的文件系统。查看所有容器,包括运行和停止,输入:

docker container ls -a
#或者
docker ps -a
  • 1
  • 2
  • 3

只有在容器停止后才能删除它。通过输入:

docker container stop <name_or_id>
  • 1

然后可以通过输入以下命令删除容器:

docker container rm <name_or_id>
  • 1

同样,可以向该命令添加任意数量的以空格分隔的容器名、id。

很少有必要保留已停止的容器。——rm选项可以添加到任何docker run命令中,以便在容器终止时自动删除容器。

Network 整理

容器可以附加到docker管理的networks上,这样它们就可以彼此通信。这些配置文件不会占用太多的磁盘空间。查看所有Docker网络,输入:

docker network ls
  • 1

一个或多个未使用的networks可以通过以下命令删除:

docker network rm <name_or_id>
  • 1

同样,可以向该命令添加任意数量的以空格分隔的networks名/ id。

Volume 清理

Docker卷是一个虚拟磁盘镜像。它必须附加到一个正在运行的容器上,这样它就可以在重启之间保存文件或其他状态信息。volumes的大小取决于使用它的应用程序,但是一个典型的数据库将需要几百兆的空间,即使它大部分是空的。

查看所有docker管理的磁盘volumes,输入:

docker volume ls
  • 1

删除一个Docker卷将永远擦除它的数据!没有回头路了。

如果您正在开发一个数据库驱动的应用程序,通常可以保留一个或多个数据转储,这些数据转储可用于重新创建一组特定的记录。大多数数据库客户端工具都提供转储或导出功能,比如管理员中的export功能。

大多数数据库系统都会提供备份工具,比如MySQL中的mysqldump实用程序。这些可以使用docker exec命令在一个正在运行的容器上执行。

下面的Linux/macOS命令将MySQL数据库mydb备份到一个名为backup.sql的文件中。使用MySQL root用户,密码为mysecret:

docker exec mysql /usr/bin/mysqldump -u root -pmysecret mydb \
  > backup.sql
  • 1
  • 2

你也可以用docker cp命令将数据文件复制到或从一个正在运行的容器中。这是传递的源和目标路径,其中容器引用的名称/ID后跟冒号及其路径,例如:

docker cp mycontainer:/some/file ./host/directory
  • 1

假设你的数据是安全的,你可以删除任何未使用的volumes输入:

docker volume rm <name>
  • 1

所有未使用的Docker卷,那些当前未被附加到运行容器上的volumes,可以通过以下方式删除:

docker volume prune
  • 1

或者,docker volume prune -a将全部删除。但是你先需要做了重要数据备份?

  • 删除未使用的volume
#列出未使用的volume
$ docker volume ls -qf dangling=true

#删除未使用的volume
$ docker volume rm $(docker volume ls -qf dangling=true)
  • 1
  • 2
  • 3
  • 4
  • 5

开始大扫除

每个未使用的容器、镜像、volumes和networks都可以用一个命令清除:

docker system prune -a --volumes
  • 1

添加-f如果你想强制擦除而不提示确认。您的系统将回到一个原始状态,没有任何Docker数据。

声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/从前慢现在也慢/article/detail/196135
推荐阅读
相关标签
  

闽ICP备14008679号