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
- Nerworks:
上面 的
networks:
- back-tier #在同一个网络上 不需要links
会有单独的一个 networks (与 services 同级别) 对back-tier 进行 阐述
类似于 docker nerwork create -d bridge back-tier
4、编写 docker-compose.yml
version: '3'
services:
wordpress:
image: wordpress
ports:
- 8080:80
environment:
WORDPRESS_DB_HOST: mysql
WORDPRESS_DB_PASSWORD: root
networks:
- my-bridge
mysql:
image: mysql
environment:
MYSQL_ROOT_PASSWORD: root
MYSQL_DATABASE: wordpress
volumes:
- mysql-data:/var/lib/mysql
networks:
- my-bridge
volumes:
mysql-data:
networks:
my-bridge:
driver: bridge