1. docker compose概念 文檔 https://docs.docker.com/compose/compose-file/compose-versioning
一個基於 docker 的工具
可以通過一個 yml 文件定義多容器的 docker 應用
通過一條命令就可以根據 yml 文件的定義 去創建或者管理這多個容器
2 docker compose 版本 2 與 版本 3 的區別
最大的區別
version 2 只能用於單機
version 3 可用於多機
3. docker-compose.yml
Services
一個 service 代表一個 container , 這個 container 可以從 dockerhub 的 image 來創建, 或者從本地的 Dockerfile build出來的image 來創建
service 的啟動 類似與 docker run , 我們可以給其指定 network 和 volume . 所以可以給 service 指定 network 和 volume 的引用
eg :
docker run -d --name db -v db-data:/var/liv/postgresql/data --network back-tier postgres:9.4
services:
db: #service 的名稱為 db
image: postgres:9.4 #service image 為 postgres:9.4 這是從遠程拉取的
volumes:
- "db-data:/var/liv/postgresql/data" #將外部db-data掛載到container 的 /var/liv/postgresql/data 內
networks:
- back-tier #網絡為 back-tier
eg2:
docker run -d --link db --link redis --network back-tier worker
services:
worker:
build: ./worker
links:
- db
- redis
networks:
- back-tier #在同一個網絡上 不需要links
Volumes:
上面 的
volumes:
- "db-data:/var/liv/postgresql/data" #將外部db-data掛載到container 的 /var/liv/postgresql/data 內
會有單獨的一個 volumes (與 services 同級別) 對db-data 進行 闡述
類似於 docker volume create db-data
eg:
volumes:
db-data:
Nerworks:
上面 的
networks:
- back-tier #在同一個網絡上 不需要links
會有單獨的一個 networks (與 services 同級別) 對back-tier 進行 闡述
類似於 docker nerwork create -d bridge back-tier
networks:
front-tier:
driver: bridge
back-tier:
driver: bridge
4編寫 docker-compose.yml
# docker compose api 版本
version: '3'
services:
# 定義了 兩個 service 分別是 名字分別是 wordpress 和 mysql
wordpress:
#image 為 word press
image: wordpress
#本地 8888 端口 映射 容器 80 端口
ports:
- 8888:80
#wordpress 連接數據庫 的 host 為 mysql , passwword 為 root 類似於 -e
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
#指定連接 的網絡 為 my-bridge
networks:
- my-bridge
mysql:
image: mysql:5.7.27
# 數據庫 root 的 連接密碼 和 所使用的數據庫名稱
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
# 外部 mysql-data 掛載到 容器內的 /var/lib/mysql
volumes:
- mysql-data:/var/lib/mysql
#指定連接 的網絡 為 my-bridge
networks:
- my-bridge
# 定義 volumes
volumes:
mysql-data:
# 定義 networks
networks:
my-bridge:
driver: bridge