在使用Docker时,常常会因为开发的需要新增、修改或删除容器及镜像。由于Docker镜像较大,会占据过多的空间,所以我们需要经常清理Docker镜像,以释放硬盘空间。本文将介绍如何使用一键命令,清理Docker中过期或无用的镜像。
一、Docker常见操作命令
在介绍如何清理Docker镜像前,我们需要了解一些常见的Docker操作命令。
1.拉取镜像
使用以下命令可以在Dockerhub上拉取镜像:
“`
docker pull :
“`
例如拉取Ubuntu 18.04的命令为:
“`
docker pull ubuntu:18.04
“`
2.查看镜像列表
使用以下命令可以查看本地所有的Docker镜像列表:
“`
docker images
“`
3.创建容器并启动
使用以下命令可以在Docker中创建一个容器并启动:
“`
docker run -it :
“`
例如在Ubuntu18.04中创建一个容器并启动的命令为:
“`
docker run -it ubuntu:18.04
“`
4.停止并删除容器
使用以下命令可以停止并删除一个运行中的容器:
“`
docker stop
docker rm
“`
5.停止并删除镜像
使用以下命令可以停止并删除一个Docker镜像:
“`
docker rmi :
“`
二、一键清理过期或无用Docker镜像的方法
由于Docker会缓存过去所有层的数据,无论容器是否仍在运行,都会保留该层数据,如果不清理它们,将会占据大量的磁盘空间。下面介绍两种快速清理无用Docker镜像的方法。
方法一:使用docker system prune命令
可以使用以下命令,一键清理过期或无用Docker镜像:
“`
docker system prune -a -f –volumes
“`
该命令会移除所有未被使用的镜像、悬挂镜像、网络和容器。其中:
– a:移除所有未被使用的镜像,而不仅仅是那些悬挂的镜像;
– f:强制删除,不需要用户确认;
– –volumes:删除未被使用的数据卷。
请注意,这个命令可以清空所有的Docker镜像和容器。使用时需谨慎!
方法二:使用自定义脚本一键清理
也可以使用以下自定义脚本来清理过期或无用Docker镜像:
“`
#!/bin/bash
# A simple script to clean up docker dangling images.
echo ‘—–Stopping and removing all containers—–‘
docker stop $(docker ps -a -q)
docker rm $(docker ps -a -q)
echo ‘—–Removing stopped docker images—–‘
docker rmi $(docker images –filter=dangling=true -q) -f
echo ‘—–Cleanup complete—–‘
“`
此脚本会首先停止并删除所有的容器,然后删除所有未被使用的镜像。可以将此脚本存为文件并命名为docker-clean.sh,然后运行以下命令进行清理:
“`
sudo chmod +x ./docker-clean.sh
sudo ./docker-clean.sh
“`
三、避免Docker镜像过期导致空间占满
除了使用上述方法清理过期或无用的Docker镜像外,还有一些额外的方法可以避免Docker镜像过期导致空间占满的情况。
1.使用特定的TAG名称
当你重新构建或更新镜像时,应该给每个构建添加一个唯一标识符。对于具有多个构建的松散的卷或端点,可以将它们与特定的构建联系起来。
例如,对于一个名为myapp的Docker镜像,可以使用以下命令添加一个标签:
“`
docker build -t myapp:v1.0 .
“`
2.使用Dockerfile缓存
在更新Dockerfile时,可以使用缓存以最小化下载的新文件数量。如果你不需要从头生成该容器,这将非常有用。要使用Dockerfile缓存,可以使用以下命令:
“`
docker build –no-cache=false -t myapp:v1.0 .
“`
使用缓存的Dockerfile帮助减少了Docker镜像失控的几率,同时缩短了重新生成容器所需的时间。
结语
Docker是一款非常实用的工具,但它会占据大量的磁盘空间。本文介绍了如何使用一键命令,清理Docker中过期或无用的镜像,以及如何避免Docker镜像过期导致空间占满的情况。希望对读者有所帮助。
原创文章,作者:小蓝,如若转载,请注明出处:https://www.506064.com/n/312601.html