4.容器间的互联和单机版容器编排

2022-04-06 分类:docker 阅读(376) 评论(0)

孙富阳, 江湖人称没人称。多年互联网运维工作经验,曾负责过孙布斯大规模集群架构自动化运维管理工作。擅长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起来了,效率很高

评论已关闭

登录

忘记密码 ?

切换登录

注册

鲁ICP备2021019243号-1