差異處

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

連向這個比對檢視

兩邊的前次修訂版 前次修改
下次修改
前次修改
tech:docker [2021/09/22 16:42] – [Image Template] jonathantech:docker [2023/11/20 12:03] (目前版本) – [設定自動清除 docker log] jonathan
行 1: 行 1:
 ====== Docker 語法與操作整理 ====== ====== Docker 語法與操作整理 ======
-  * 雖然 CentOS 7 內建有 Docker 但是我大部分的環境還是 CentOS 6, 所以先以現有環境安裝測試 Docker 是否真的如傳說中的神奇 
  
 ===== 安裝程序 ===== ===== 安裝程序 =====
-==== CentOS 6 ==== +==== Ubuntu 22.04 ==== 
-  * 需要先安裝 EPEL <code sh+  * 安裝語法  
-rpm -Uvh http://mirror01.idc.hinet.net/EPEL/6/x86_64/epel-release-6-8.noarch.rpm +    * 標準安裝 <cli
-</code> +sudo apt-get update 
-  * 安裝 docker-io <code sh+sudo apt-get install ca-certificates curl gnupg 
-yum install docker-io +sudo install -m 0755 -d /etc/apt/keyrings 
-</code>+curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg 
 +sudo chmod a+r /etc/apt/keyrings/docker.gpg 
 + 
 +# Add the repository to Apt sources: 
 +echo \ 
 +  "deb [arch="$(dpkg --print-architecture)" signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \ 
 +  "$(. /etc/os-release && echo "$VERSION_CODENAME")" stable" | \ 
 +  sudo tee /etc/apt/sources.list.d/docker.list /dev/null 
 +sudo apt-get update 
 + 
 +sudo apt-get install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin 
 +</cli>
  
 ==== Ubuntu 20.04 ==== ==== Ubuntu 20.04 ====
-  * 安裝語法 <cli>+  * 安裝語法  
 +    * 標準安裝 <cli>
 curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
 sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
-sudo apt-get install docker-ce=5:19.03.14~3-0~ubuntu-focal docker-ce-cli=5:19.03.14~3-0~ubuntu-focal containerd.io -y+sudo apt install docker.io docker-compose-plugin 
 +</cli> 
 +    * 指定 docker 版本 <cli> 
 +curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add - 
 +sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" 
 +sudo apt-get install docker-ce=5:19.03.14~3-0~ubuntu-focal docker-ce-cli=5:19.03.14~3-0~ubuntu-focal docker-compose-plugin containerd.io -y 
 +</cli>  
 +  * 設定特定使用者使用 docker 權限 Exp. jonathan<cli> 
 +sudo usermod -aG docker jonathan 
 +</cli> 
 +  * 安裝 rootless docker 方式<cli> 
 +curl -s https://get.docker.com/ | bash 
 +dockerd-rootless-setuptool.sh install
 </cli> </cli>
  
-===== 啟動程序 ===== +<note> 
-===== CentOS 6 ===== +  * 如果要在 rootless docker 讓 container 能夠 listen 1024 以下的 Port 需要執行 <cli
-<code sh+sudo setcap cap_net_bind_service=+ep "/usr/bin/rootlesskit" 
-service docker start +systemctl --user restart docker 
-chkconfig docker on +</cli> 
-</code>+</note>
  
 +==== 更新 docker compose 內相同 image 的最新版方式 ====
 +  * 參考 - https://stackoverflow.com/questions/49316462/how-to-update-existing-images-with-docker-compose
 +  * 因為有很多使用的 image 都是 latest 的 tag , 簡單更新與移除舊 image 方式如下<cli>
 +docker compose pull
 +docker compose up --force-recreate --build -d
 +docker image prune -f
 +</cli>
 +
 +==== 設定自動清除 docker log =====
 +  * 主要是建立 /etc/docker/daemon.json 這設定檔, 定義自動分割與刪除 Exp. log size 最大 10m, 保留最近 3 份 <file>
 +{
 +  "log-opts": {"max-size": "10m", "max-file": "3"}
 +}
 +</file>
 ===== 開始下載與測試 Template ===== ===== 開始下載與測試 Template =====
   * CentOS <code sh>   * CentOS <code sh>
行 68: 行 105:
 docker ps --all docker ps --all
 </code>在 STATUS 欄位可以看到是否運中還是離開(Exited)狀態 </code>在 STATUS 欄位可以看到是否運中還是離開(Exited)狀態
 +  * 使用 bash 進入到運行中的 docker container **docker exec -it <CONTAINER ID> or <NAMES> /bin/bash**<cli>
 +~$ docker exec -it c789b6b5ee99 bash
 +bash-5.0#
 +</cli>
   * 切換到運行中的 docker container **docker attach <CONTAINER ID> or <NAMES>**<code sh>   * 切換到運行中的 docker container **docker attach <CONTAINER ID> or <NAMES>**<code sh>
 docker attach silly_hawking docker attach silly_hawking
行 90: 行 131:
 docker rm 2522259349a9 docker rm 2522259349a9
 </code> </code>
 +  * 查看 image 內的相關訊息 **docker run -i -t <image> <shell cmd>** <cli>
 +docker run -i -t php:7.0.33-cli-jessie bash
 +</cli>
 +
 +===== 針對 docker compose 內其中一個 container 更改設定後重新啟動 =====
 +  * 參考 - https://stackoverflow.com/questions/37609662/docker-compose-restart-only-updated-images
 +  * 處理方式 Exp. iii-devops-lite-ui<cli>
 +docker-compose up -d --no-deps iii-devops-lite-ui
 +</cli>
  
 ===== 預計測試項目 ===== ===== 預計測試項目 =====
  • tech/docker.1632300144.txt.gz
  • 上一次變更: 2021/09/22 16:42
  • jonathan