[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使用语法
1 2 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
|
安装
1 2 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模板
1 2 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示例
1 2 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.yml version: '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
|