如何清理你的 Docker 环境
清理你的 Docker 设置
清理一切
最初发表于deepu.tech。
清理你的 Docker 设置
如果你在 PC 或 Mac 上使用 Docker,随着时间的推移,它会积累大量的垃圾,其中大部分是悬挂镜像和孤立卷。它们会占用你机器的大量空间。
您应该时不时地清理一下,幸运的是,有一些 docker 命令可以帮助我们,再加上一些 bash magic,我们可以用 3 个简单的步骤很好地完成这项工作。
清理旧容器
Docker 有一个docker rm
删除容器的命令,我们可以使用它和一些docker ps
过滤器来删除所有当前未使用的容器。这完全没问题,因为它不会影响任何正在运行的程序,而且如果你想再次使用任何被删除的镜像,docker 会帮你下载。
因此下面的命令应该可以解决问题。
docker rm -v $(docker ps -a -q -f status=exited);
docker ps -a -q -f status=exited
提供处于退出状态的容器 ID 列表,并docker rm -v
删除这些容器及其关联的卷。运行docker rm --help
并docker ps --help
查看标志的含义。
注意:如果您想要这些卷中的任何内容,您应该在执行此操作之前进行备份。
清理悬空卷
悬空卷是指已存在且不再连接到任何容器的卷。rm
对于卷,也有类似的命令。我们可以将此命令与docker volume ls
带有过滤器的命令结合使用,以删除悬空的卷。以下是执行此操作的命令。
docker volume rm $(docker volume ls -q -f dangling=true);
docker volume ls -q -f dangling=true
返回未连接到任何容器的卷名称并将docker volume rm
其删除。运行docker volume rm --help
并docker volume ls --help
查看标志的含义。
注意:如果您想要这些卷中的任何内容,您应该在执行此操作之前进行备份。
清理悬空图像
最后,我们需要清理悬空镜像。Docker 镜像由多个层组成,而悬空镜像是指与任何标记镜像都无关的层。它们不再有任何用途,并且会占用磁盘空间,因此可以安全地删除。我们可以使用docker image prune -a
Docker 中的命令来删除未使用的镜像,但由于某种原因,此命令对我来说不起作用,因此我不得不使用image rm
以下命令。
docker image rm $(docker images -q -f dangling=true);
docker images -q -f dangling=true
返回与任何标记图像无关的图像名称并将docker image rm
其删除。运行docker image rm --help
并docker images --help
查看标志的含义。
清理一切
更新:似乎 docker 提供了一个本机命令来清理所有内容。
docker system prune --volumes
您可以运行此命令来实现与以下命令相同的结果,甚至更多。感谢cyberjack指出这一点。以下内容仅供学习参考。
现在我们可以将这些命令添加为便捷的 Bash 函数,这样我们就可以像往常一样用一个命令完成清理工作。它释放了大量磁盘空间,并且在我遇到 docker-compose 的一些奇怪缓存问题时非常有用 😉。
将以下函数添加到您的~/.bashrc
或并重新加载您的终端或通过运行或来~/.zshrc
获取文件。. ~/.zshrc
. ~/.bashrc
function dpurgeall(){
docker rm -v $(docker ps -a -q -f status=exited);
docker volume rm $(docker volume ls -qf dangling=true);
docker image rm $(docker images -qf dangling=true);
}
现在你只需运行dpurgeall
它,它就会清理你的 Docker 环境。如果没有什么需要清理的,该命令就会一直存在,所以不用担心。
如果您喜欢这篇文章,请点赞或留言。
封面图片来源:Unsplash上chuttersnap的照片
文章来源:https://dev.to/deepu105/how-to-clean-up-your-docker-environment-4jm4