文章目录
展开Docker单机编排工具
Docker-Compose 介绍
Compose 是用于定义和运行多容器 Docker 应用工具
通过 Compose 可以使用 YML 文件来配置应用程序所需要的所有服务
Docker Compose 使用的三步:
- 使用 docker file 定义应用程序的环境
- docker-compose 定义构成应用程序的服务
- 启动 Compose,就相当于启动应用
版本号对应
yaml使用compose的版本:version 2-3的大版本
docker版本:docker version
docker-compose版本:docker-compose version
安装指定版本的 Docker-compose
# 官方下载
curl -L "https://github.com/docker/compose/releases/download/v1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
## 本地下载
wget https://download.wodeyumengouwo.com/kubernetes/docker/docker-compose-linux-x86_64
# yum安装docker-Compose
yum install -y docker-compose
# 手动传输docker-compose安装包,需要进行以下操作
[root@docker02 ~]# mv docker-compose-linux-x86_64 /usr/bin/docker-compose
[root@docker02 ~]# chmod +x /usr/bin/docker-compose
[root@docker02 ~]# docker-compose version
Docker Compose version v2.21.0
Docker-compose 模板
version: '版本号'
services:
服务名称1:
image: 容器镜像
container_name: 容器名称
environment:
环境变量1=值1(环境变量1: 值1)
环境变量2=值2(环境变量2: 值2)
user: 宿主机用户:容器用户#(如果是相同用户只需要填写一个)
volumes:
- 宿主机数据目录:容器内数据目录
ports:
- 宿主机端口:容器内映射端口
networks:
- 自定义网络名称
links:
- namenode
command:
- 数据库使用字符集变量时可以用
restart: always
服务名称2:
image: 容器镜像
container_name: 容器名称
environment:
环境变量1=值1(环境变量1: 值1)
环境变量2=值2(环境变量2: 值2)
user: 宿主机用户:容器用户#(如果是相同用户只需要填写一个)
volumes:
- 宿主机数据目录:容器内数据目录
ports:
- 宿主机端口:容器内映射端口
networks:
- 自定义网络名称
links:
- namenode
command:
- 数据库使用字符集变量时可以用
depends_on:
- 依赖服务
restart: always
networks:
default:
externnal: true
name: 自定义网络名称
Docker-compose 部署 zabbix 实战
Docker run 语法
# 1.启动zabbix数据库
docker run \
--name zabbix-db \
-v /data/zabbix:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-e MYSQL_DATABASE='zabbix' \
-e MYSQL_USER='zabbix' \
-e MYSQL_PASSWORD='123' \
-p 33060:3306 \
-d mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_bin
# 2.启动zabbix-server
docker run \
--name zabbix-server \
--link zabbix-db \
-e DB_SERVER_HOST="zabbix-db" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123" \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:5.0.37-alpine
# 3.启动zabbix前端
docker run \
--link zabbix-db \
--link zabbix-server \
--name zabbix-web \
-e DB_SERVER_HOST="zabbix-db" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-p 8080:8080 \
-d zabbix/zabbix-web-nginx-mysql:5.0.37-alpine
Docker-compose
[root@docker01 zabbix]# cat docker-compose.yaml
version: '2.2'
services:
mysql57:
image: mysql:5.7
container_name: mysql57
environment:
MYSQL_ROOT_PASSWORD: '123'
MYSQL_DATABASE: 'zabbix'
MYSQL_USER: 'zabbix'
MYSQL_PASSWORD: '123'
volumes:
- /data/mysql57:/var/lib/mysql
ports:
- 3306:3306
command:
- --character-set-server=utf8
- --collation-server=utf8_bin
restart: always
zabbix-server:
image: zabbix/zabbix-server-mysql:5.0.37-alpine
container_name: zabbix-server
environment:
DB_SERVER_HOST: 'mysql57'
MYSQL_USER: 'zabbix'
MYSQL_PASSWORD: '123'
ports:
- 10051:10051
links:
- mysql57
depends_on:
- mysql57
restart: always
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:5.0.37-alpine
container_name: zabbix-web
environment:
DB_SERVER_HOST: 'mysql57'
MYSQL_USER: 'zabbix'
MYSQL_PASSWORD: '123'
ZBX_SERVER_HOST: 'zabbix-server'
PHP_TZ: 'Asia/Shanghai'
ports:
- 8080:8080
links:
- mysql57
- zabbix-server
depends_on:
- mysql57
- zabbix-server
restart: always
Dockercompose 管理命令
# 启动docker-compose(指定配置文件)
[root@docker01 zabbix]# docker-compose -f zabbix-compose.yaml up
-f 指定配置文件
# 启动docker-compose
[root@docker01 zabbix]# docker-compose up
如不指定配置文件,则文件名需要改为docker-compose
# 后台启动
[root@docker01 zabbix]# docker-compose up -d
-d 后台启动
# 查看进程
[root@docker01 zabbix]# docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------
mysql57 docker-entrypoint.sh --cha ... Up 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
zabbix-server /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10051->10051/tcp,:::10051->10051/tcp
zabbix-web docker-entrypoint.sh Up 0.0.0.0:8080->8080/tcp,:::8080->8080/tcp, 8443/tcp
# 重启(启动\停止)docker-compose
[root@docker01 zabbix]# docker-compose restart(start\stop)
# 指定容器重启(启动\停止)
[root@docker01 zabbix]# docker-compose restart(start\stop) 容器名
# 实时查看docker-compose日志
[root@docker01 zabbix]# docker-compose logs -f
# 指定容器查看docker-compose日志
[root@docker01 zabbix]# docker-compose logs 容器名
docker图形化界面
# 1.启动zabbix数据库
docker run \
--name zabbix-db \
-v /data/zabbix:/var/lib/mysql \
-e MYSQL_ROOT_PASSWORD=123 \
-e MYSQL_DATABASE='zabbix' \
-e MYSQL_USER='zabbix' \
-e MYSQL_PASSWORD='123' \
-p 33060:3306 \
-d mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_bin
# 2.启动zabbix-server
docker run \
--name zabbix-server \
--link zabbix-db \
-e DB_SERVER_HOST="zabbix-db" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123" \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:5.0.37-alpine
# 3.启动zabbix前端
docker run \
--link zabbix-db \
--link zabbix-server \
--name zabbix-web \
-e DB_SERVER_HOST="zabbix-db" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="123" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e PHP_TZ="Asia/Shanghai" \
-p 8080:8080 \
-d zabbix/zabbix-web-nginx-mysql:5.0.37-alpine
[root@docker01 zabbix]# cat docker-compose.yaml
version: '2.2'
services:
mysql57:
image: mysql:5.7
container_name: mysql57
environment:
MYSQL_ROOT_PASSWORD: '123'
MYSQL_DATABASE: 'zabbix'
MYSQL_USER: 'zabbix'
MYSQL_PASSWORD: '123'
volumes:
- /data/mysql57:/var/lib/mysql
ports:
- 3306:3306
command:
- --character-set-server=utf8
- --collation-server=utf8_bin
restart: always
zabbix-server:
image: zabbix/zabbix-server-mysql:5.0.37-alpine
container_name: zabbix-server
environment:
DB_SERVER_HOST: 'mysql57'
MYSQL_USER: 'zabbix'
MYSQL_PASSWORD: '123'
ports:
- 10051:10051
links:
- mysql57
depends_on:
- mysql57
restart: always
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:5.0.37-alpine
container_name: zabbix-web
environment:
DB_SERVER_HOST: 'mysql57'
MYSQL_USER: 'zabbix'
MYSQL_PASSWORD: '123'
ZBX_SERVER_HOST: 'zabbix-server'
PHP_TZ: 'Asia/Shanghai'
ports:
- 8080:8080
links:
- mysql57
- zabbix-server
depends_on:
- mysql57
- zabbix-server
restart: always
Dockercompose 管理命令
# 启动docker-compose(指定配置文件)
[root@docker01 zabbix]# docker-compose -f zabbix-compose.yaml up
-f 指定配置文件
# 启动docker-compose
[root@docker01 zabbix]# docker-compose up
如不指定配置文件,则文件名需要改为docker-compose
# 后台启动
[root@docker01 zabbix]# docker-compose up -d
-d 后台启动
# 查看进程
[root@docker01 zabbix]# docker-compose ps
Name Command State Ports
------------------------------------------------------------------------------------------------------------
mysql57 docker-entrypoint.sh --cha ... Up 0.0.0.0:3306->3306/tcp,:::3306->3306/tcp, 33060/tcp
zabbix-server /sbin/tini -- /usr/bin/doc ... Up 0.0.0.0:10051->10051/tcp,:::10051->10051/tcp
zabbix-web docker-entrypoint.sh Up 0.0.0.0:8080->8080/tcp,:::8080->8080/tcp, 8443/tcp
# 重启(启动\停止)docker-compose
[root@docker01 zabbix]# docker-compose restart(start\stop)
# 指定容器重启(启动\停止)
[root@docker01 zabbix]# docker-compose restart(start\stop) 容器名
# 实时查看docker-compose日志
[root@docker01 zabbix]# docker-compose logs -f
# 指定容器查看docker-compose日志
[root@docker01 zabbix]# docker-compose logs 容器名
docker图形化界面
[root@docker01 ~]# docker load < portainer.portainer.tar.gz
[root@docker01 ~]# docker run -d -p 9000:9000 -v /var/run/docker.sock:/var/run/docker.sock --restart=always --name portainer portainer/portainer
修改名称
添加其他主机
# docker 修改远程连接
[root@docker02 ~]# vim /usr/lib/systemd/system/docker.service
ExecStart=/usr/bin/dockerd -H tcp://0.0.0.0:2375 -H fd:// --containerd=/run/containerd/containerd.sock
# 重启
[root@docker02 ~]# systemctl daemon-reload
[root@docker02 ~]# systemctl restart docker
Comments | NOTHING