差異處
這裏顯示兩個版本的差異處。
- | 兩邊的前次修訂版 前次修改 下次修改 |
- | tech:docker [2014/11/10 16:29] – [Image Template] jonathan |
---|---|
+ | 前次修改 |
+ | tech:docker [2025/04/10 12:51] (目前版本) – [清除目前主機端未使用的 docker images] jonathan |
@@ 行 -1 +1,197 @@ | |
====== Docker 語法與操作整理 ====== | |
===== 安裝程序 ===== | |
==== 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 ==== | |
* 安裝語法 | |
* 標準安裝 <cli> | |
curl -fsSL https:// | |
sudo add-apt-repository "deb [arch=amd64] https:// | |
sudo apt install docker.io docker-compose-plugin | |
</ | |
* 指定 docker 版本 <cli> | |
curl -fsSL https:// | |
sudo add-apt-repository "deb [arch=amd64] https:// | |
sudo apt-get install docker-ce=5: | |
</ | |
* 設定特定使用者使用 docker 權限 Exp. jonathan< | |
sudo usermod -aG docker jonathan | |
</ | |
* 安裝 rootless docker 方式< | |
curl -s https:// | |
dockerd-rootless-setuptool.sh install | |
</ | |
< | |
* 如果要在 rootless docker 讓 container 能夠 listen 1024 以下的 Port 需要執行 <cli> | |
sudo setcap cap_net_bind_service=+ep "/ | |
systemctl --user restart docker | |
</ | |
</ | |
==== 刪除已經不執行的 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 ===== | |
* CentOS <code sh> | |
docker pull centos | |
</ | |
* Fedora <code sh> | |
docker pull fedora | |
docker run -i -t fedora /bin/bash | |
</ | |
* 輸入 exit 就可以結束與離開 | |
* 輸入 CTRL-p + CTRL-q 可以離開 (docker container 繼續在背景執行) | |
===== 基本操作方式 ===== | |
==== Image Template ==== | |
* 找目前 Internet 已存在的 Image Template **docker search < | |
docker search ubuntu</ | |
* 安裝 Image Template **docker pull <img tmp name> | |
docker pull centos</ | |
* 列出目前已安裝的 Image Template **docker images**< | |
docker images</ | |
* 刪除不需要的 Image Template **docker rmi <IMAGE ID> | |
docker rmi 2a973533a1af</ | |
* 建立自己的 Image Template **docker commit -m="< | |
docker commit -m=" | |
* 對 Image Template 增加 TAG **docker tag <IMAGE ID> < | |
docker tag dc30d39a01da tryweb/ | |
* 將 Image Template 存成檔案 **docker save <img tmp name> > <img tmp name> | |
docker save busybox > busybox.tar | |
</ | |
* 將 Image Template 檔案匯入 **docker load --input <img tmp name> | |
docker load --input busybox.tar | |
</ | |
< | |
* 顯示 Images 的 Digest < | |
* 顯示特定格式 Images 資訊 Exp. iiiorg/ | |
fcfbe89fe52a: | |
</ | |
</ | |
==== Container ==== | |
* 想要 sh 進入操作有 ENTRYPOINT 的 image 容器 | |
* 啟動一個臨時容器, | |
* 進入一個啟動容器, | |
* 查詢有哪些 docker container 存在 **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 attach silly_hawking | |
</ | |
* 啟動離開(Exited)狀態的 docker container **docker start < | |
docker start 2522259349a9 | |
</ | |
* 查看 docker container 的 Console 訊息 **docker logs < | |
docker logs 2522259349a9 | |
</ | |
* 查看 docker container 的詳細資訊 **docker inspect < | |
docker inspect 2522259349a9 | |
docker inspect -f "{{ .NetworkSettings }}" 2522259349a9 | |
</ | |
* 備份 docker container <code sh> | |
</ | |
* 關閉啟動中的 docker container (成為離開狀態)**docker stop < | |
docker stop 2522259349a9 | |
</ | |
* 刪除已關閉(離開狀態)的 docker container**docker rm < | |
docker rm 2522259349a9 | |
</ | |
* 查看 image 內的相關訊息 **docker run -i -t < | |
docker run -i -t php: | |
</ | |
===== 針對 docker compose 內其中一個 container 更改設定後重新啟動 ===== | |
* 參考 - https:// | |
* 處理方式 Exp. iii-devops-lite-ui< | |
docker-compose up -d --no-deps iii-devops-lite-ui | |
</ | |
===== 預計測試項目 ===== | |
* DNS (named) | |
* Proxy (nginx) | |
* Web Server (apache+php) | |
* Mail Server (sendmail+MailScanner) | |
* [[tech: | |
* [[tech: | |
* SVN Server (subversion) | |
* DB Server (mysql / postgresql) | |
* File Server (ceph) | |
* docker mrtg howto | |
* docker container live migration howto | |
* [[tech: | |
* [[tech: | |
* [[tech: | |
===== 參考網址 ===== | |
* http:// | |
* https:// | |
* https:// | |
{{tag> | |