在使用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/zh-hant/n/312601.html