docker命令:docker-stack相關操作、使用 inspect 命令查看鏡像詳細信息、docker rm & docker rmi & docker prune 清理刪除鏡像的差異


一、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 子命令,也就是強制刪除,才能移除掉該鏡像。但是,我們一般不推薦這樣暴力的做法,正確的做法應該是:

  1. 先刪除引用這個鏡像的容器;
  2. 再刪除這個鏡像;

(6)清理鏡像:我們在使用 Docker 一段時間后,系統一般都會殘存一些臨時的、沒有被使用的鏡像文件,可以通過以下命令進行清理:

docker image prune

  它支持的子命令有:

  • -a, --all: 刪除所有沒有用的鏡像,而不僅僅是臨時文件;
  • -f, --force:強制刪除鏡像文件,無需彈出提示確認;

  另外,執行完 docker image prune 命令后,還會告訴我們釋放了多少存儲空間!


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM