差異處
這裏顯示兩個版本的差異處。
兩邊的前次修訂版 前次修改 下次修改 | 前次修改 | ||
tech:docker [2023/08/20 14:55] – jonathan | tech:docker [2025/04/10 12:51] (目前版本) – [清除目前主機端未使用的 docker images] jonathan | ||
---|---|---|---|
行 2: | 行 2: | ||
===== 安裝程序 ===== | ===== 安裝程序 ===== | ||
+ | ==== Ubuntu 22.04 ==== | ||
+ | * 安裝語法 | ||
+ | * 標準安裝 <cli> | ||
+ | sudo apt-get update | ||
+ | sudo apt-get install ca-certificates curl gnupg | ||
+ | sudo install -m 0755 -d / | ||
+ | curl -fsSL https:// | ||
+ | sudo chmod a+r / | ||
+ | |||
+ | # Add the repository to Apt sources: | ||
+ | echo \ | ||
+ | "deb [arch=" | ||
+ | "$(. / | ||
+ | sudo tee / | ||
+ | sudo apt-get update | ||
+ | |||
+ | sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin | ||
+ | </ | ||
+ | |||
==== Ubuntu 20.04 ==== | ==== Ubuntu 20.04 ==== | ||
* 安裝語法 | * 安裝語法 | ||
行 14: | 行 33: | ||
sudo apt-get install docker-ce=5: | sudo apt-get install docker-ce=5: | ||
</ | </ | ||
- | * 啟動 docker 服務 <cli> | ||
- | systemctl enable docker | ||
- | systemctl restart docker | ||
- | </ | ||
* 設定特定使用者使用 docker 權限 Exp. jonathan< | * 設定特定使用者使用 docker 權限 Exp. jonathan< | ||
sudo usermod -aG docker jonathan | sudo usermod -aG docker jonathan | ||
行 32: | 行 47: | ||
</ | </ | ||
</ | </ | ||
+ | |||
+ | ==== 刪除已經不執行的 docker container ==== | ||
+ | * 主要是在 docker run 之後, 如果沒有指定 --rm 就會在容器被停止或執行離開後留下, | ||
+ | * 解決方式 | ||
+ | - 透過< | ||
+ | - 檢查如果有 crontab 設定自動啟動容器, | ||
+ | |||
+ | ==== 更新 docker compose 內相同 image 的最新版方式 ==== | ||
+ | * 參考 - https:// | ||
+ | * 因為有很多使用的 image 都是 latest 的 tag , 簡單更新與移除舊 image 方式如下< | ||
+ | docker compose pull | ||
+ | docker compose up --force-recreate --build -d | ||
+ | docker image prune -f | ||
+ | </ | ||
+ | |||
+ | ==== 設定自動清除 docker log ===== | ||
+ | * 主要是建立 / | ||
+ | { | ||
+ | " | ||
+ | } | ||
+ | </ | ||
+ | |||
+ | ==== 清除目前主機端未使用的 docker images ===== | ||
+ | * 先刪除已經 exited 狀態的 docker 程序< | ||
+ | docker rm $(docker ps -a -q -f status=exited) | ||
+ | </ | ||
+ | * <cli> | ||
+ | sudo docker system prune -a -f | ||
+ | docker volume ls -qf dangling=true | xargs --no-run-if-empty docker volume rm | ||
+ | </ | ||
+ | |||
+ | ==== 匯出與匯入 docker images ===== | ||
+ | * 當離線環境或自己 build 出的 image 就需要用到此功能 | ||
+ | * Exp. ai-gen-doc: | ||
+ | - 在來源主機匯出方式 <cli> | ||
+ | docker save -o ai-gen-doc-1.1.3.tar ai-gen-doc: | ||
+ | </ | ||
+ | - 在來源主機傳輸檔案到目標主機 <cli> | ||
+ | scp ai-gen-doc-1.1.3.tar [email protected]:/ | ||
+ | </ | ||
+ | * 到目標主機匯入方式 <cli> | ||
+ | docker load -i ai-gen-doc-1.1.3.tar | ||
+ | </ | ||
+ | |||
===== 開始下載與測試 Template ===== | ===== 開始下載與測試 Template ===== | ||
* CentOS <code sh> | * CentOS <code sh> | ||
行 72: | 行 131: | ||
==== Container ==== | ==== Container ==== | ||
+ | * 想要 sh 進入操作有 ENTRYPOINT 的 image 容器 | ||
+ | * 啟動一個臨時容器, | ||
+ | * 進入一個啟動容器, | ||
* 查詢有哪些 docker container 存在 **docker ps --all**< | * 查詢有哪些 docker container 存在 **docker ps --all**< | ||
docker ps --all | docker ps --all | ||
</ | </ | ||
+ | * 使用 bash 進入到運行中的 docker container **docker exec -it < | ||
+ | ~$ docker exec -it c789b6b5ee99 bash | ||
+ | bash-5.0# | ||
+ | </ | ||
* 切換到運行中的 docker container **docker attach < | * 切換到運行中的 docker container **docker attach < | ||
docker attach silly_hawking | docker attach silly_hawking |