- 1. Docker compose安装
 - 2. 编写规则(主要包含version、services、network)
 - docker-compose.yml中还有network网络模式:
network_mode: “bridge”
network_mode: “host”
network_mode: “none”
network_mode: “service:[service name]”
network_mode: “container:[container name/id]” - -f  指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d
#移除容器
docker-compose -f docker-compose.yml down
#查看nginx容器实时log
docker-compose logs -f registry
#列出项目中目前的所有容器
docker-compose ps 
明人不说暗话:docker-compose是用来做docker的多容器控制
1. Docker compose安装
sudo curl -L "https://github.com/docker/compose/releases/download/1.24.1/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-composesudo chmod +x /usr/local/bin/docker-compose# 查看版本docker-compose -v
2. 编写规则(主要包含version、services、network)
version: '3.2'services:registry:# 基于Dockerfile文件构建镜像时使用的属性build:# .代表当前目录context: .# 指定Dockerfile文件名。如果context指定了文件名,这里就不用本属性了dockerfile: Dockerfile-swappingvolumes:- ./code/registry.jar:/code/registry.jar- ./code/registry.file:/code/registry.file- /etc/localtime:/etc/localtimeports:- "8761:8761"# 挂了会重启restart: alwaysentrypoint: java -Xms500m -Xmx500m -jar /code/registry.jar > /code/registry.file 2>&1# 两种网络模式,host即共享宿主机网卡network_mode: "host"# 自定义容器虚拟网卡# networks:# net-microservice:# pv4_address: 10.10.10.2environment:TZ: Asia/Shanghai# 指定启动顺序depends_on:- getway- mysql- nginxgetway:# image 如果本地没有镜像,则会在公共镜像仓库拉取对应镜像image: java:latestvolumes:- ./code/getway.jar:/code/getway.jar- ./code/getway.file:/code/getway.file- /etc/localtime:/etc/localtimeports:- "9000:9000"restart: alwaysentrypoint: java -Xms500m -Xmx500m -jar /code/getway.jar > /code/getway.file 2>&1network_mode: "host"# networks:# net-microservice:# ipv4_address: 10.10.10.3environment:TZ: Asia/Shanghaimysql:image: mysql:5.6volumes:- /root/data/mysql:/var/lib/mysql- ./conf/:/etc/mysql/conf.dports:- "3306:3306"environment:- MYSQL_DATABASE=online- MYSQL_ROOT_PASSWORD=123456nginx:# build 基于指定Dockerfile路径,compose利用它进行构建build: ./nginxcontainer_name: /path/to/build/nginxdockerfile: Dockerfile-applabels:version: "2.0"released: "true"volumes:# volumes挂载目录,ro表示只读- ./nginx/nginx.conf:/etc/nginx/nginx.conf:ro- ./nginx/conf.d:/etc/nginx/conf.d:ro- ./logs/nginx:/var/log/nginx/ports:- "80:80"- "443:443"restart: always# command 会覆盖容器启动后默认执行的命令command: nginx -g 'daemon off;'# 自定义网络组networks:# 网络组名称net-microservice:# 网络的模式ipam:config:- subnet: 10.10.10.0/24
docker-compose.yml中还有network网络模式:
network_mode: “bridge”
network_mode: “host”
network_mode: “none”
network_mode: “service:[service name]”
network_mode: “container:[container name/id]”
说明:
- 在旧版本中,version 可能会有 2 这些情况,建议我们的都用 3,兼容性更强,注意需要引号。
 - 注意关键字的单数和复数的使用,如果是复数,说明该值是列表,那么值前面就需要横线 -。
 - 配置中的环境变量都是来源于该镜像的官方文档。
 - 为了项目分开,我们一般都会选择不通的项目创建不同的单独的网络环境用于区分。
 - 顶级的 volumes 和 networks 其实都类似于声明的作用。
 
当然还有一些其它的关键字,但是一般很少用,可以自己去了解,类似 depends_on 这种。
3. Docker compose常用命令
-f  指定使用的 Compose 模板文件,默认为 docker-compose.yml,可以多次指定。
docker-compose -f docker-compose.yml up -d 
#移除容器
docker-compose -f docker-compose.yml down
#查看nginx容器实时log
docker-compose logs -f registry
#列出项目中目前的所有容器
docker-compose ps
https://blog.csdn.net/u011781521/article/details/80464826
4. Compose和Docker兼容性
| compose文件格式版本 | docker版本 | 
|---|---|
| 3.4 | 17.09.0+ | 
| 3.3 | 17.06.0+ | 
| 3.2 | 17.04.0+ | 
| 3.1 | 1.13.1+ | 
| 3.0 | 1.13.0+ | 
| 2.3 | 17.06.0+ | 
| 2.2 | 1.13.0+ | 
| 2.1 | 1.12.0+ | 
| 2.0 | 1.10.0+ | 
| 1.0 | 1.9.1.+ | 
