[toc]
Docker-compose介绍
Docker Compose是一个用来定义和运行复杂应用的Docker工具。一个使用Docker容器的应用,通常由多个容器组成。使用Docker Compose不再需要使用shell脚本来启动容器。
Compose 通过一个配置文件来管理多个Docker容器,在配置文件中,所有的容器通过services来定义,然后使用docker-compose脚本来启动,停止和重启应用,和应用中的服务以及所有依赖服务的容器,非常适合组合使用多个容器进行开发的场景
Docker-compose使用步骤
- 需要有一个镜像
- dockerhub 拉镜像
- dockerfile 自己制作镜像
 
- docker-compose定义构成应用程序的服务
- 启动docker-compose
Compose版本和Docker兼容性
Docker-compose版本说明
| Reference file | What changed in this version | 
| Version 3 | Version 3 updates | 
| Version 2 | Version 2 updates | 
| Version 1 (Deprecated) | Version 1 updates 弃用 | 
版本兼容
| Compose file format | Docker Engine release | 
| Compose specification | 19.03.0+ | 
| 3.8 | 19.03.0+ | 
| 3.7 | 18.06.0+ | 
| 3.6 | 18.02.0+ | 
| 3.5 | 17.12.0+ | 
| 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.4 | 17.12.0+ | 
| 2.3 | 17.06.0+ | 
| 2.2 | 1.13.0+ | 
| 2.1 | 1.12.0+ | 
| 2.0 | 1.10.0+ | 
Docker版本变化说明:
Docker从1.13.x版本开始,版本分为企业版EE和社区版CE,版本号也改为按照时间线来发布,比如17.03就是2017年3月。
Docker的linux发行版的软件仓库从以前的https://apt.dockerproject.org和https://yum.dockerproject.org变更为目前的https://download.docker.com, 软件包名字改为docker-ce和docker-ee。
Docker-compose安装及使用
docker-compose使用语法
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 
 | docker-compose up
 
 
 docker-compose -f zabbix-compose.yml up
 
 
 docker-compose -f zabbix-compose.yml up -d
 
 
 docker-compose -f zabbix-compose.yml logs
 
 
 docker-compose -f zabbix-compose.yml logs -f
 
 
 docker-compose -f zabbix-compose.yml logs zabbix-web
 
 
 docker-compose start
 
 
 docker-compose start mysql
 
 
 docker-compose stop
 
 
 docker-compose start mysql
 
 
 docker-compose rm
 
 | 
安装
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 
 | wget https://github.com/docker/compose/releases/download/v2.18.1/docker-compose-linux-x86_64 -O /usr/local/bin/docker-compose
 
 
 chmod +x /usr/local/bin/docker-compose
 
 
 rm -f /usr/bin/docker-compose
 
 
 source /etc/profile
 
 
 docker-compose version
 Docker Compose version v2.18.1
 
 | 
docker-compose模板
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 58
 
 | version: '版本号'
 services:
 服务名称1:
 image: 容器镜像
 container_name: 容器名称
 environment:
 - 环境变量1=值1
 - 环境变量2=值2
 volumes:
 - 宿主机数据目录:容器内数据目录
 ports:
 - 宿主机端口:容器内映射端口
 networks:
 - 自定义网络名称
 links:
 - namenode
 command:
 - 数据库使用字符集变量时可以用
 restart: always
 
 服务名称2:
 image: 容器镜像
 container_name: 容器名称
 environment:
 - 环境变量1=值1
 - 环境变量2=值2
 user: 宿主机用户:容器用户
 volumes:
 - 宿主机数据目录:容器内数据目录
 ports:
 - 宿主机端口:容器内映射端口
 networks:
 - 自定义网络名称
 links:
 - namenode
 depends_on:
 - 依赖服务
 restart: always
 
 networks:
 default:
 externnal: true
 name: 自定义网络名称
 
 wordpress:
 depends_on:
 - db
 image: wordpress:latest
 volumes:
 - /data/web_data:/var/www/html
 ports:
 - "80:80"
 restart: always
 environment:
 WORDPRESS_DB_HOST: db
 WORDPRESS_DB_USER: wordpress
 WORDPRESS_DB_PASSWORD: wordpress
 
 | 
docker-compose部署zabbix示例
| 12
 3
 4
 5
 6
 7
 8
 9
 10
 11
 12
 13
 14
 15
 16
 17
 18
 19
 20
 21
 22
 23
 24
 25
 26
 27
 28
 29
 30
 31
 32
 33
 34
 35
 36
 37
 38
 39
 40
 41
 42
 43
 44
 45
 46
 47
 48
 49
 50
 51
 52
 53
 54
 55
 56
 57
 
 | vim zabbix-compose.ymlversion: '3.8'
 
 services:
 mysql:
 image: mysql:5.7
 container_name: mysql57
 environment:
 - MYSQL_ROOT_PASSWORD='123'
 - MYSQL_DATABASE='zabbix'
 - MYSQL_USER='zabbix'
 - MYSQL_PASSWORD='zabbix'
 volumes:
 /db_data:/var/lib/mysql
 - /zabbix_data:/var/lib/mysql
 ports:
 - 3306:3306
 command:
 - --character-set-server=utf8
 - --collation-server=utf8_bin
 restart: always
 
 zabbix-server:
 image: zabbix/zabbix-server-mysql:latest
 container_name: zabbix-server
 environment:
 - MYSQL_DATABASE='zabbix'
 - DB_SERVER_HOST='mysql'
 - MYSQL_USER='zabbix'
 - MYSQL_PASSWORD='zabbix'
 ports:
 - 10051:10051
 links:
 - mysql
 depends_on:
 - mysql
 restart: always
 
 zabbix-web:
 image: zabbix/zabbix-web-nginx-mysql:latest
 container_name: zabbix-web
 environment:
 - DB_SERVER_HOST='mysql'
 - MYSQL_USER='zabbix'
 - MYSQL_PASSWORD='zabbix'
 - ZBX_SERVER_HOST='zabbix-server'
 - PHP_TZ='Asia/Shanghai'
 ports:
 - 80:8080
 - 443:8443
 links:
 - mysql
 - zabbix-server
 depends_on:
 - mysql
 - zabbix-server
 restart: always
 
 |