docker-compose容器集群编排详解(十二)
docker compose容器编排
1.compose简介
-
前面我们使用docker的时候,定义dockerfile,每次只能启动一个容器,然后微服务架构的应用系统一般包含若干个微服务,每个微服务一般都会部署多个实例,如果每个微服务都要手动启动,那么效率会非常低
-
使用docker compose可以轻松、高效的管理容器,可以一起运行多个容器
2.安装docker compose
2.1.安装compose
[root@docker01 ~]# yum -y install python2-pip
[root@docker01 ~]# pip install --upgrade pip
[root@docker01 ~]# pip install subprocess32 --upgrade --ignore-installed subprocess32
[root@docker01 ~]# pip install -i https://pypi.tuna.tsing.edu.cn/simple docker-compose
2.2.安装docker compose遇到的问题
1)pip版本问题
此报错说明pip的版本太低了
解决方法:
[root@docker02 ~]# pip install --upgrade pip
2)subprocess32安装问题
没有安装subprocess32
[root@docker02 ~]# pip install subprocess32 --upgrade --ignore-installed subprocess32
2.3.version问题
ERROR: Could not find a version that satisfies the requirement docker-compose (from versions: none)
ERROR: No matching distribution found for docker-compose
解决方法
pip config set global.index-url https://pypi.tuna.tsinghua.edu.cn/simple
pip install docker-compose
如果不行再执行下面的命令
pip install -i https://pypi.tuna.tsing.edu.cn/simple docker-compose
2.4.requests报错
pip install --ignore-installed requests
3.docker compose常用命令
执行docker compose命令时要在yaml文件的目录执行
当使用up的时候用–参数,up后直接用参数
**语法格式:**docker compose 参数
参数:
-
ps:列出所有容器
[root@docker03 wordpress]# docker-compose ps
-
logs:查看服务日志输出
[root@docker03 wordpress]# docker-compose logs
-
port:打印绑定的公共端口
[root@docker03 wordpress]# docker-compose port wordpress 80 0.0.0.0:32768 此命令用来查看某一个端口映射到容器的那个端口,要查端口时前面要跟上服务的名称
-
build:构建或重新构建服务
[root@docker03 wordpress]# docker-compose build
-
tart:启动指定服务已存在的容器
[root@docker03 wordpress]# docker-compose start wordpress
-
stop:停止已运行的服务的容器
[root@docker03 wordpress]# docker-compose stop wordpress
-
rm:删除指定服务的容器
[root@docker01 wordpress]# docker-compose rm wordpress Going to remove wordpress_wordpress_1 Are you sure? [yN] y Removing wordpress_wordpress_1 ... done
-
up:构建、启动容器
docker-compose up
-
kill:杀掉容器
docker-compose kill wordpress
-
pull系在服务进行
-
scale:指定服务器运行容器的个数
docker-compose scale wordpress=3
-
run运行
docker-compose run web bash
4.docker-compose.yaml属性
- version:指定docker-compose.yaml的写法格式
- services:多个容器的集合
- build:配置构建时,Compose 会利用它自动构建镜像,该值可以是一个路径,也可以是一个对象,用于指定 Dockerfile 参数
- command:覆盖容器启动后默认执行的命令
- dns:配置dns服务
- dns_search:配置dns搜索域
- environment:环境变量
- env_file:从文件中获取环境变量
- expose:端口
- images:服务所使用的的镜像
- network_mode:设置网络模式
- ports:对端口的定义
- links:容器别名、容器互连
- volume:卷挂载路径
- logs:日志输出
5.docker-compose安装wordpress
5.1.编写docker-compose.yaml
1.准备compose目录
[root@docker03 wordpress]# mkdir /data2/wordpress/
2.编写yaml文件
[root@docker03 wordpress]# vim docker-compose.yaml
#wordpress
version: '3' #指定dockercompose的版本
services: #一个services表示启动一个容器
db: #容器的名称
image: mysql:5.7 #容器的版本
volumes: #定义数据卷
- db_data:/var/lib/mysql #使用数据卷
restart: always #开机自启
environment: #设置环境变量
MYSQL_ROOT_PASSWORD: somewordpress
MYSQL_DATABASE: wordpress
MYSQL_USER: wordpress
MYSQL_PASSWORD: wordpress
wordpress: #容器的名称
depends_on: #与mysql容器关联起来
- db
image: wordpress:latest #镜像的版本
volumes: #定义数据卷
- web_data:/var/www/html #使用数据卷
ports: #定义端口
- "80" #这里写一个端口表示这是一个随机端口,将本地的随机端口映射到容器的80
restart: always #开机自启
environment: #设置环境变量
WORDPRESS_DB_HOST: db:3306
WORDPRESS_DB_USER: wordpress
WORDPRESS_DB_PASSWORD: wordpress
volumes: #创建卷组
db_data:
web_data:
3.启动安装wordpress
[root@docker03 wordpress]# docker-compose up -d
5.2.扩展:配置wordpress负载均衡
1)运行多个wordpress容器
[root@docker03 wordpress]# docker-compose scale wordpress=3
WARNING: The scale command is deprecated. Use the up command with the --scale flag instead.
Starting wordpress_wordpress_1 ... done
Creating wordpress_wordpress_2 ... done
Creating wordpress_wordpress_3 ... done
scale默认会算上之前启动过的,因此后来启动了2个,在输出的时候秒级第一行done,过了一定时间后面两个才会启动成功
如果wordpress容器一开始没有启动则使用命令启动
[root@docker03 wordpress]# docker-compose up -d --scale wordpress=3
2)配置nginx负载均衡
在其他机器上做
1.编辑配置文件
[root@docker02 conf.d]# vim wordpress.conf
upstream wordpress {
server 192.168.81.230:32771;
server 192.168.81.230:32772;
server 192.168.81.230:32773;
}
server {
listen 82;
server_name localhost;
location / {
proxy_pass http://wordpress;
proxy_set_header HOST $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
}
}
2.重载nginx
[root@docker02 conf.d]# systemctl restart nginx
3.观察日志
5.3.增加几个容器并添加负载节点
docker操作
[root@docker03 wordpress]# docker-compose scale wordpress=5
负载均衡配置
增加后来的节点
upstream wordpress {
server 192.168.81.230:32771;
server 192.168.81.230:32772;
server 192.168.81.230:32773;
server 192.168.81.230:32775;
server 192.168.81.230:32774;
}
5.4.删除docker-compose scale增加的容器
可以用docker-compose scale增加也可以用docker-compose scale删除
一开始有10个,执行下面的命令就会把其他8个删掉
[root@docker03 wordpress]# docker-compose scale wordpress=2
6.docker-compose安装zabbix
6.1.编写compose文件
[root@docker03 zabbix]# vim docker-compose.yaml
#zabbix
version: '3' #版本
services: #一个容器一个services
mysql-server: #容器名
image: mysql:5.7 #镜像的版本
volumes: #定义数据卷
- db_data:/var/lib/mysql #使用数据卷
restart: always #开机自启
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
- zabbix-java-gateway
image: zabbix/zabbix-server-mysql:latest
ports:
- "10051:10051"
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
zabbix-web-nginx-mysql:
depends_on:
- mysql-server
- zabbix-server
image: zabbix/zabbix-web-nginx-mysql:latest
ports:
- "80:8080"
restart: always
environment:
DB_SERVER_HOST: mysql-server
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
MYSQL_ROOT_PASSWORD: root_pwd
volumes:
db_data:
6.2.运行docker-compose zabbix容器
[root@docker03 zabbix]# docker-compose up -d
Creating zabbix_mysql-server_1 ... done
Creating zabbix_zabbix-java-gateway_1 ... done
Creating zabbix_zabbix-server_1 ... done
Creating zabbix_zabbix-web-nginx-mysql_1 ... done
7.设置容器开机自启的两种方法
1.使用--restart=always
2.在配置文件中增加
"live-restore": true
目录 返回
首页