一、docker-stack相關操作
docker stack deploy --compose-file docker-compose.yml stack_name //啟動stack docker stack down service_name //關閉stack docker stack ls // 查看stack下service列表 docker stack services service_name //查看指定service的所有容器 docker stack ps service_name // 查看指定service的所有容器運行狀態詳情
二、使用 inspect 命令查看鏡像詳細信息
通過 docker inspect
命令,我們可以獲取鏡像的詳細信息,其中,包括創建者,各層的數字摘要等。
使用 docker inspect docker鏡像名:docker鏡像tag
docker inspect docker.io/mysql:5.7
// docker.io/mysql - 鏡像名 // 5.7 - 鏡像tag
可以看到該鏡像的具體信息,比如上面的架構:arm64
docker inspect
返回的是 JSON
格式的信息,如果您想獲取其中指定的一項內容,可以通過 -f
來指定,如獲取鏡像大小:
docker inspect -f {{".Size"}} docker.io/mysql:5.7
就可以直接獲取到鏡像的size。再比如下面獲取鏡像架構:
三、docker rm & docker rmi & docker prune 清理刪除鏡像的差異
docker rm : 刪除一個或多個 容器
docker rmi : 刪除一個或多個 鏡像
docker prune: 用來刪除不再使用的 docker 對象
1、docker rm命令:
docker rm [OPTIONS] CONTAINER [CONTAINER...]
// OPTIONS說明:
-f : 通過SIGKILL信號強制刪除一個運行中的容器 -l : 移除容器間的網絡連接,而非容器本身 -v : 刪除與容器關聯的卷 // 強制刪除容器db01、db02:
docker rm -f db01 db02 // 移除容器 my-nginx 對容器db01的連接,連接名db01:
docker rm -l db01 // 刪除容器 my-nginx,並刪除容器掛載的數據卷:
docker rm -v my-nginx
2、docker rmi 命令:
docker rmi [OPTIONS] IMAGE [IMAGE...]
// OPTIONS說明:
-f : 強制刪除 --no-prune : 不移除該鏡像的過程鏡像,默認移除 // 強制刪除本地鏡像 mongo:3.2
docker rmi -f mongo:3.2
3、docker prune 命令
// 刪除 所有未被 tag 標記和未被容器使用的鏡像:
docker image prune // 刪除 所有未被容器使用的鏡像:
docker image prune -a // 刪除 所有停止運行的容器:
docker container prune // 刪除 所有未被掛載的卷:
docker volume prune // 刪除 所有網絡:
docker network prune // 刪除 docker 所有資源:
docker system prune
4、清理刪除鏡像
通過如下兩個都可以刪除鏡像:
docker rmi [image]
docker image rm [image]
(1)支持的子命令如下:
-f, -force
: 強制刪除鏡像,即便有容器引用該鏡像;-no-prune
: 不要刪除未帶標簽的父鏡像;
(2)當同一個鏡像擁有多個標簽時,執行 docker rmi
命令,只是會刪除了該鏡像眾多標簽中您指定的標簽而已,並不會影響原始的那個鏡像文件。
(3)如果某個鏡像不存在多個標簽,當且僅當只有一個標簽時,執行刪除命令時,您就要小心了,這會徹底刪除鏡像。
(4)通過 ID 刪除鏡像:除了通過標簽名稱來刪除鏡像,我們還可以通過制定鏡像 ID, 來刪除鏡像,如:docker rmi ee7cbd482336,
一旦制定了通過 ID 來刪除鏡像,它會先嘗試刪除所有指向該鏡像的標簽,然后在刪除鏡像本身。
(5)刪除鏡像的限制:刪除鏡像很簡單,但也不是我們何時何地都能刪除的,它存在一些限制條件。當通過該鏡像創建的容器未被銷毀時,鏡像是無法被刪除的,因為有容器正在引用他。除非通過添加 -f
子命令,也就是強制刪除,才能移除掉該鏡像。但是,我們一般不推薦這樣暴力的做法,正確的做法應該是:
- 先刪除引用這個鏡像的容器;
- 再刪除這個鏡像;
(6)清理鏡像:我們在使用 Docker 一段時間后,系統一般都會殘存一些臨時的、沒有被使用的鏡像文件,可以通過以下命令進行清理:
docker image prune
它支持的子命令有:
-a, --all
: 刪除所有沒有用的鏡像,而不僅僅是臨時文件;-f, --force
:強制刪除鏡像文件,無需彈出提示確認;
另外,執行完 docker image prune
命令后,還會告訴我們釋放了多少存儲空間!