# Docker Compose ## 安裝 Docker Compose >$ sudo apt update; sudo apt install docker-compose -y; sudo reboot 顯示 docker-compose 版本 >$ docker-compose version docker-compose version 1.25.0, build unknown docker-py version: 4.1.0 CPython version: 3.8.5 OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020 ## 確認Docker Compose跟Docker版本是否符合 ![](https://i.imgur.com/98Qx72t.png) ## 顯示 docker-compose 版本 >$ docker-compose version docker-compose version 1.25.0, build unknown docker-py version: 4.1.0 CPython version: 3.8.5 OpenSSL version: OpenSSL 1.1.1f 31 Mar 2020 ## docker compose 常用執行命令 - 用yaml檔建立多個container >$ docker-compose -f #檔名.yaml up -d - 觀察yaml檔啟動的container >$ docker-compose -f myapp.yml ps - 用yaml檔刪除多個container >$ docker-compose -f myapp.yml down ## 檢視docker網路 ### 執行docker compose時會建立一個網路(名稱為在所在目錄) !!!如果在同一個資料夾裡面compose第二次時,會在產生網路覆蓋掉舊的網路,但舊的container還是會有網路 >$ docker network list NETWORK ID NAME DRIVER SCOPE 0c5c9d2d38b3 bridge bridge local fa440baaa779 host host local 806a77c3730e none null local 36bdc5c064c8 wulin_default bridge local ## docker compose yaml template - database ```yaml= version: '3.7' #使用docker compose版本 3.7 services: sqldb: # services名稱 image: mariadb container_name: sqldb hostname: sqldb volumes: - ./db:/var/lib/mysql:rw #mount本機的./db 到mariadb container 裡面 /var/lib/mysql 在本機永久保存mariadb的資料 environment: MYSQL_DATABASE: "sqldb" #建置過程中sqldb database MYSQL_ROOT_PASSWORD: "root" # 設定root密碼為root ``` --- ## 實際使用範例 ### 批次建立 學生主機 - 單一學生範例 >$ nano dkclass.temp ``` s${n}: image: dafu/alpine.plus ports: - "221${n}:22" ``` - 使用dkclass.sh,裡面會使用dkclass.temp來批次產生yaml檔資訊 >$ nano dkclass.sh ``` #!/bin/bash echo $'version: \'3\' services:' > dkclass.yaml export n=0 while [ $n -lt 30 ] do cat dkclass.temp | envsubst >> dkclass.yaml n=$(( $n+1 )) done ```