4.容器间的互联和单机版容器编排
孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长Web集群架构与自动化运维,曾负责国内某大型博客网站运维工作。
1.容器间的互联
因为docker容器每次启动都会重新分配ip所以需要容器互联下面由一个zabbix的例子来演示一下
docker run --link 正在运行容器的名字(单方向)
准备好镜像包导入镜像
[root@docker01 ~]# for n in `ls *.tar.gz` ;do docker load -i $n ;done

直接复制下面所有命令!!!
docker run --name mysql-server -it \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-d mysql:5.7 \
--character-set-server=utf8 --collation-server=utf8_bin
docker run --name zabbix-java-gateway -t \
-d zabbix/zabbix-java-gateway:latest
docker run --name zabbix-server-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
--link mysql-server:mysql \
--link zabbix-java-gateway:zabbix-java-gateway \
-p 10051:10051 \
-d zabbix/zabbix-server-mysql:latest
docker run --name zabbix-web-nginx-mysql -t \
-e DB_SERVER_HOST="mysql-server" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
--link mysql-server:mysql \
--link zabbix-server-mysql:zabbix-server \
-p 80:80 \
-d zabbix/zabbix-web-nginx-mysql:latest
----------------------------------------------------------------------------
直接访问宿主机的ip地址发现zabbix已经起来的,所以学完docker不会安装zabbix也能快速安装了
2.单机版的容器编排(了解即可,后面会用k8s管理容器)
上面的容器起来后,没办法进行批量的管理。这时候就需要一个容器编排工具来管理
一个业务,往往需要一组容器来支撑
容器编排,就是来实现批量管理一组容器的方法(类似于ansible)
单机 —— ssh —— 安装服务
集群 —— 批量安装服务 —— ansible yaml
docker-compose.yaml 描述docker如何启动一组容器
1.docker-compose命令
yum install docker-compose -y ## 需要epel源
docker-compose up -d ## 创建并启动
docker-compose start ## 默认全部启动
docker-compose stop ## 默认全部停止
docker-compose restart ## 默认全部重启
docker-compose down ## 停止并删除、相当于卸载
docker-compose scale zabbix-java-gateway=3 ## 如果没有做固定端口的话,可以调整某一类型的容器数量
2.基于docker-compose启动一组容器并管理
1.安装dicker-compose
[root@docker01 ~]# yum install docker-compose -y
[root@docker01 ~]# mkdir -p /opt/dockerfile/docker-compose
[root@docker01 ~]# cd /opt/dockerfile/docker-compose/
[root@docker01 /opt/dockerfile/docker-compose]# mkdir zabbix
[root@docker01 /opt/dockerfile/docker-compose]# cd zabbix/
[root@docker01 /opt/dockerfile/docker-compose/zabbix]# vim docker-cpmpose.yaml
粘贴以下内容!!!
version: '3'
services:
mysql-server:
image: mysql:5.7
restart: always
environment:
MYSQL_ROOT_PASSWORD: root_pwd
MYSQL_DATABASE: zabbix
MYSQL_USER: zabbix
MYSQL_PASSWORD: zabbix_pwd
command: --character-set-server=utf8 --collation-server=utf8_bin
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
2.清空之前的容器,避免发生端口冲突
[root@docker01 /opt/dockerfile/docker-compose/zabbix]# docker rm `docker ps -a -q`
[root@docker01 /opt/dockerfile/docker-compose/zabbix]# docker-compose up -d
浏览器访问发现zabbix起来了,效率很高
未经允许不得转载:孙某某的运维之路 » 4.容器间的互联和单机版容器编排
评论已关闭