Docker 環境建置 === # Introduction * 安裝Docker Engine主要分成Desktop及Server,Desktop除了安裝Docker Engine之外,還會包括其他項目,像是Docker Compose、Kubernetes,Server版本就只會安裝Docker Engine * Docker原先是一個基於Linux的容器技術,但在微軟與Docker合作後,推出了基於Windows的容器,因此現在Docker被分為Linux Container及Windows Container兩種 # Windows Container 1. 安裝windows docker https://download.docker.com/win/static/stable/x86_64/ 2. 設定環境變數 * 檔案位置 ![](https://i.imgur.com/uxIMr46.png) * 環境變數 ![](https://i.imgur.com/TAI9iOI.png) 4. 啟動Docker Server ``` dockerd --register-service Start-Service docker ``` ![](https://i.imgur.com/5N5heXT.png) # Linux Container 安裝Docker(Linux Container)有2個方式,一個是藉由Hyper-V啟動一個linux虛擬機,在虛擬機上運行Docker Engine,另一個是在WSL2運行Docker Engine ## Hyper-V 1. 開啟Hyper-V ![](https://i.imgur.com/6VRuoPa.png) 2. [到Docker官方安裝Docker Desktop](https://www.docker.com/products/docker-desktop/) *** ## WSL 開啟WSL功能 ![](https://i.imgur.com/nS5OLTi.png) Docker Desktop --- [到Docker官方安裝Docker Desktop](https://www.docker.com/products/docker-desktop/) *** 不用Docker Desktop --- 因為WSL1.0才支援systemd,所以要使用最新的WSL1.0 1. 到Microsoft Store安裝 WSL1.0 ![](https://i.imgur.com/dYFcwdM.png) 2. 確認Windows Update有更新到KB5020030之後 ![](https://i.imgur.com/4oP0mg2.png) 3. 安裝WSL 這邊使用Ubuntu ``` wsl --install Ubuntu ``` 4. 開啟systemd * 進到wsl編輯/etc/wsl.conf ``` sudo vi /etc/wsl.conf ``` * 新增內容 ``` [boot] systemd=true ``` * 重啟WSL ``` wsl --shutdown ``` 5. 安裝docker ``` sudo apt-get install -y apt-transport-https ca-certificates curl gnupg lsb-release curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg echo "deb [arch=amd64 signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null sudo apt-get update sudo apt-get install -y docker-ce docker-ce-cli containerd.io ``` 設定開啟wsl自動啟動docker service ``` sudo systemctl enable docker.service sudo systemctl enable containerd.service ``` 將User加到group中,之後執行docker cmd無須加sudo ``` sudo groupadd docker sudo gpasswd -a $USER docker ``` 確認是否安裝成功 ``` docker version ``` 6. 在WSL環境安裝Docker Compose 如果無須在WSL環境中執行Docker Compose,此步驟可跳過 * 下載docker compose ``` sudo curl -SL https://github.com/docker/compose/releases/download/v2.14.2/docker-compose-linux-x86_64 -o /usr/local/bin/docker-compose ``` * 修改docker-compose執行權限 ``` sudo chmod +x /usr/local/bin/docker-compose; ``` * 確認是否安裝成功 ![](https://i.imgur.com/wybrUw6.png) 8. 在Windows環境安裝Docker Client * 安裝windows docker https://download.docker.com/win/static/stable/x86_64/ * 解壓縮後設定環境變數 檔案位置 ![](https://i.imgur.com/uxIMr46.png) 環境變數 ![](https://i.imgur.com/TAI9iOI.png) 7. 設定context * 修改Docker Daemon host ``` sudo cp /lib/systemd/system/docker.service /etc/systemd/system/ sudo sed -i 's/\ -H\ fd:\/\//\ -H\ fd:\/\/\ -H\ tcp:\/\/127.0.0.1:2375/g' /etc/systemd/system/docker.service sudo systemctl daemon-reload sudo systemctl restart docker.service ``` * 設定context ``` docker context create wsl --docker host=tcp://127.0.0.1:2375 docker context use wsl ``` * 確定docker cmd是可以執行 ![](https://i.imgur.com/lSaXKx9.png) 8. 在Windows環境安裝Docker Compose * 到[Docker Compose GitHub](https://github.com/docker/compose/releases)下載Docker Compose執行檔 ![](https://i.imgur.com/wo8sR2k.png) * 設定環境變數(我這邊把docker-compose-windows-x86_64.exe改名為docker-compose.exe放到docker/cli-plugins內) 檔案位置 ![](https://i.imgur.com/PKvKd2E.png) 環境變數 ![](https://i.imgur.com/ewzGUje.png) * 確定docker-compose cmd可以執行 ![](https://i.imgur.com/hNHlF3S.png)