差異處

這裏顯示兩個版本的差異處。

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
tech:docker [2024/06/29 15:24] – [設定自動清除 docker log] jonathantech:docker [2025/04/10 12:51] (目前版本) – [清除目前主機端未使用的 docker images] jonathan
行 47: 行 47:
 </cli> </cli>
 </note> </note>
 +
 +==== 刪除已經不執行的 docker container ====
 +  * 主要是在 docker run 之後, 如果沒有指定 --rm 就會在容器被停止或執行離開後留下, 可以使用 <cli>docker ps -a</cli>查看這些沒執行的容器, 當這樣的容器超過一定數量後, 就無法在這主機上建立新容器, 會出現類似空間不足的錯誤訊息
 +  * 解決方式
 +    - 透過<cli>docker container prune</cli>將這些停止的容器刪除
 +    - 檢查如果有 crontab 設定自動啟動容器, 要在 docker run 命令後加上 --rm 參數
  
 ==== 更新 docker compose 內相同 image 的最新版方式 ==== ==== 更新 docker compose 內相同 image 的最新版方式 ====
行 64: 行 70:
  
 ==== 清除目前主機端未使用的 docker images ===== ==== 清除目前主機端未使用的 docker images =====
 +  * 先刪除已經 exited 狀態的 docker 程序<cli>
 +docker rm $(docker ps -a -q -f status=exited)
 +</cli>
   * <cli>   * <cli>
 sudo docker system prune -a -f sudo docker system prune -a -f
 docker volume ls -qf dangling=true | xargs --no-run-if-empty docker volume rm docker volume ls -qf dangling=true | xargs --no-run-if-empty docker volume rm
 +</cli>
 +
 +==== 匯出與匯入 docker images =====
 +  * 當離線環境或自己 build 出的 image 就需要用到此功能
 +  * Exp. ai-gen-doc:1.1.3
 +    - 在來源主機匯出方式 <cli>
 +docker save -o ai-gen-doc-1.1.3.tar ai-gen-doc:1.1.3
 +</cli>
 +    - 在來源主機傳輸檔案到目標主機 <cli>
 +scp ai-gen-doc-1.1.3.tar [email protected]:/path/to/destination/
 +</cli>
 +    * 到目標主機匯入方式 <cli>
 +docker load -i ai-gen-doc-1.1.3.tar
 </cli> </cli>
  
行 109: 行 131:
  
 ==== Container ==== ==== Container ====
 +  * 想要 sh 進入操作有 ENTRYPOINT 的 image 容器
 +    * 啟動一個臨時容器, Exp. certbot/dns-cloudflare:latest<cli>docker run -it --rm --entrypoint /bin/sh certbot/dns-cloudflare:latest</cli>
 +    * 進入一個啟動容器, Exp. certbot <cli>docker exec -it certbot /bin/sh -c sh</cli>
   * 查詢有哪些 docker container 存在 **docker ps --all**<code sh>   * 查詢有哪些 docker container 存在 **docker ps --all**<code sh>
 docker ps --all docker ps --all
  • tech/docker.1719645883.txt.gz
  • 上一次變更: 2024/06/29 15:24
  • jonathan