1.什么是docker-compose
- docker-compose用来在单机上编排容器(定义和运行多个容器,使容器能互通)
- docker-compose将所管理的容器分为3层结构:project service container
- docker-compose.yml组成一个project,project里包括多个service,每个service定义了容器运行的镜像(或构建镜像),网络端口,文件挂载,参数,依赖等,每个service可包括同一个镜像的多个容器实例。即 project 包含 service ,service 包含 container
2.安装docker-compose
#更新epel源
[root@docker01 zabbix]# curl -o /etc/yum.repos.d/epel.repo http://mirrors.aliyun.com/repo/epel-7.repo
#安装docker-compose
[root@docker01 zabbix]# yum install docker-compose -y(需要epel源)
#查看是否安装成功
[root@docker01 zabbix]# docker-compose -v
docker-compose version 1.18.0, build 8dd22a9
3.docker-compose的命令使用
docker-compose -h 查看所有可用的命令 docker-compose build -h 查看某个命令的使用帮助 build 构建/重新构建所有镜像,比如你原先mysql镜像是5.5,现在要基于5.7的镜像,就需要重新构建 bundle 生成一个dab集群配置文件 config 验证和查看docker-compose配置文件 create 创建服务,但是不启动服务【已弃用】,使用 docker-compose up --no-start 替代 down 停止并移除所有容器和网络配置 events 实时打印容器接收到的事件,搭配--json选项输出更加美观 exec 进入一个容器运行命令 后面一般搭配 /bin/bash使用 help 获取帮助信息 images 显示当前docker-compose.yml中用到的镜像列表 kill 杀死一个容器 logs 产看容器的日志输出 pause 暂停一个服务 port 查看一个服务的端口和宿主机端口的映射关系 ps 列出所有的容器以及状态 pull 和docker pull 一样 从docker hub上拉取一个镜像到本地 push 同 docker push 推送一个镜像到docker hub restart 重启所有服务 rm 移除已停止的服务 run 在一个容器中执行一次性命令 scale 设置一个服务要启动几个实例【已废弃】,使用docker-compose up --scale nginx=2 替代 start 启动所有无福或某个服务 stop 停止所有服务或某个服务 top 在每个容器中执行top命令,并返回结果信息 unpause 把暂停的服务恢复运行 up 创建并启动服务 version 查看docker-compose版本信息
4.docker-compose例子
创建docker-compose文件(命名必须为docker-compose.yaml或者docker-compose.yml)
version: '3' #版本号——兼容老版本
services: # 定义几个容器,就需要几个services
mysql-server: # db服务容器
image: mysql:5.7 # 使用的镜像及版本
restart: always # 设置容器开机自启
volumes: # 持久化数据库使用的数据卷
- /data/db_data:/var/lib/mysql # 宿主机目录:容器要持久化的目录
environment:
MYSQL_ROOT_PASSWORD: root_pwd
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
command: --character-set-server=utf8
zabbix-java-gateway:
image: zabbix/zabbix-java-gateway:latest
restart: always
zabbix-server:
depends_on: # 依赖的服务
- mysql-server
image: zabbix/zabbix-server-mysql:latest
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
ZBX_JAVAGATEWAY: zabbix-java-gateway
ports: #映射的端口号可以指定
- "10051:10051" #不指定为随机端口映射
zabbix-web-nginx-mysql:
depends_on:
- zabbix-server
image: zabbix/zabbix-web-nginx-mysql:latest
ports:
- "80:80"
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
/var/lib/docker/volumes/ 宿主机持久化目录
docker-compose up -d 启动服务(-d 后台启动)
docker-compose down 停止服务
5.检查是否成功
#查看前台启动的输出日志 zabbix-server_1 | 2020-02-29 08:30:40,811 INFO success: zabbix-server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs) zabbix-server_1 | 2020-02-29 08:30:40,811 INFO success: zabbix-server entered RUNNING state, process has stayed up for > than 1 seconds (startsecs)
访问zabbix首页查看
赞赏微信赞赏
支付宝赞赏