• Docker从入门到精通<8>-docker-compose任务编排


    前面我们讲了docker创建,使用,管理,但是如果容器一个一个的去创建将会变得非常的繁琐. 所以docker的编排工具就应运而生了, 比如docker-compose,swarm,mesos,kubernetes 等,这里我们不对docker-compose做深入的研究,后面我们直接使用kubernetes进行任务编排。

    安装

    安装稳定版

    # 下载docker-compose
    sudo curl -L "https://github.com/docker/compose/releases/download/1.29.2/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
    
    # 添加执行权限
    sudo chmod +x /usr/local/bin/docker-compose
    
    1. 通过docker-compose安装zabbix-server

    下载zabbix docker-compose的仓库包,这里我们下载最新的版本zabbix-docker-5.4,如果你连不上github可以从我这里下载,点这里

    unzip zabbix-docker-5.4.zip
    cd zabbix-docker-5.4
    docker-compose -f docker-compose_v3_centos_mysql_latest.yaml up -d
    
    1. 检查
    [root@vm0 zabbix]# docker ps
    CONTAINER ID   IMAGE                                             COMMAND                  CREATED          STATUS                    PORTS                                                                            NAMES
    e43420fbebb3   zabbix/zabbix-web-nginx-mysql:centos-5.4-latest   "docker-entrypoint.sh"   17 minutes ago   Up 16 minutes (healthy)   0.0.0.0:80->8080/tcp, :::80->8080/tcp, 0.0.0.0:443->8443/tcp, :::443->8443/tcp   zabbix_zabbix-web-nginx-mysql_1
    d05367fe5a44   zabbix/zabbix-server-mysql:centos-5.4-latest      "/sbin/tini -- /usr/…"   17 minutes ago   Up 16 minutes             0.0.0.0:10051->10051/tcp, :::10051->10051/tcp                                    zabbix_zabbix-server_1
    2afd5369263e   mysql:8.0                                         "docker-entrypoint.s…"   17 minutes ago   Up 17 minutes
    
    
    1. 尝试打开页面,需要等待一会儿
      image

    2. 我们简单看下zabbix docker-compose

    version: '3.5'
    services:
     zabbix-server:
      image: zabbix/zabbix-server-mysql:centos-5.4-latest
      ports:
       - "10051:10051"
      volumes:
       - /etc/localtime:/etc/localtime:ro
       - /etc/timezone:/etc/timezone:ro
       - ./zbx_env/usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts:ro
       - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
       - ./zbx_env/var/lib/zabbix/export:/var/lib/zabbix/export:rw
       - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
       - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
       - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
       - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
       - snmptraps:/var/lib/zabbix/snmptraps:rw
      ulimits:
       nproc: 65535
       nofile:
        soft: 20000
        hard: 40000
      deploy:
       resources:
        limits:
          cpus: '0.70'
          memory: 1G
        reservations:
          cpus: '0.5'
          memory: 512M
      env_file:
       - .env_db_mysql
       - .env_srv
      secrets:
       - MYSQL_USER
       - MYSQL_PASSWORD
       - MYSQL_ROOT_PASSWORD
    #   - client-key.pem
    #   - client-cert.pem
    #   - root-ca.pem
      depends_on:
       - mysql-server
      networks:
       zbx_net_backend:
         aliases:
          - zabbix-server
          - zabbix-server-mysql
          - zabbix-server-centos-mysql
          - zabbix-server-mysql-centos
       zbx_net_frontend:
    #  devices:
    #   - "/dev/ttyUSB0:/dev/ttyUSB0"
      stop_grace_period: 30s
      sysctls:
       - net.ipv4.ip_local_port_range=1024 65000
       - net.ipv4.conf.all.accept_redirects=0
       - net.ipv4.conf.all.secure_redirects=0
       - net.ipv4.conf.all.send_redirects=0
      labels:
       com.zabbix.description: "Zabbix server with MySQL database support"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "zabbix-server"
       com.zabbix.dbtype: "mysql"
       com.zabbix.os: "centos"
    
     zabbix-proxy-sqlite3:
      image: zabbix/zabbix-proxy-sqlite3:centos-5.4-latest
      profiles:
       - all
      ports:
       - "10061:10051"
      volumes:
       - /etc/localtime:/etc/localtime:ro
       - /etc/timezone:/etc/timezone:ro
       - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
       - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
       - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
       - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
       - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
       - snmptraps:/var/lib/zabbix/snmptraps:rw
      ulimits:
       nproc: 65535
       nofile:
        soft: 20000
        hard: 40000
      deploy:
       resources:
        limits:
          cpus: '0.70'
          memory: 512M
        reservations:
          cpus: '0.3'
          memory: 256M
      env_file:
       - .env_prx
       - .env_prx_sqlite3
      depends_on:
       - zabbix-java-gateway
       - zabbix-snmptraps
      networks:
       zbx_net_backend:
        aliases:
         - zabbix-proxy-sqlite3
         - zabbix-proxy-centos-sqlite3
         - zabbix-proxy-sqlite3-centos
       zbx_net_frontend:
      stop_grace_period: 30s
      labels:
       com.zabbix.description: "Zabbix proxy with SQLite3 database support"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "zabbix-proxy"
       com.zabbix.dbtype: "sqlite3"
       com.zabbix.os: "centos"
    
     zabbix-proxy-mysql:
      image: zabbix/zabbix-proxy-mysql:centos-5.4-latest
      profiles:
       - all
      ports:
       - "10071:10051"
      volumes:
       - /etc/localtime:/etc/localtime:ro
       - /etc/timezone:/etc/timezone:ro
       - ./zbx_env/usr/lib/zabbix/externalscripts:/usr/lib/zabbix/externalscripts:ro
       - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
       - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
       - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
       - ./zbx_env/var/lib/zabbix/mibs:/var/lib/zabbix/mibs:ro
       - snmptraps:/var/lib/zabbix/snmptraps:rw
      ulimits:
       nproc: 65535
       nofile:
        soft: 20000
        hard: 40000
      deploy:
       resources:
        limits:
          cpus: '0.70'
          memory: 512M
        reservations:
          cpus: '0.3'
          memory: 256M
      env_file:
       - .env_db_mysql_proxy
       - .env_prx
       - .env_prx_mysql
      depends_on:
       - mysql-server
       - zabbix-java-gateway
       - zabbix-snmptraps
      secrets:
       - MYSQL_USER
       - MYSQL_PASSWORD
       - MYSQL_ROOT_PASSWORD
    #   - client-key.pem
    #   - client-cert.pem
    #   - root-ca.pem
      networks:
       zbx_net_backend:
        aliases:
         - zabbix-proxy-mysql
         - zabbix-proxy-centos-mysql
         - zabbix-proxy-mysql-centos
       zbx_net_frontend:
      stop_grace_period: 30s
      labels:
       com.zabbix.description: "Zabbix proxy with MySQL database support"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "zabbix-proxy"
       com.zabbix.dbtype: "mysql"
       com.zabbix.os: "centos"
    
     zabbix-web-apache-mysql:
      image: zabbix/zabbix-web-apache-mysql:centos-5.4-latest
      profiles:
       - all
      ports:
       - "8081:8080"
       - "8443:8443"
      volumes:
       - /etc/localtime:/etc/localtime:ro
       - /etc/timezone:/etc/timezone:ro
       - ./zbx_env/etc/ssl/apache2:/etc/ssl/apache2:ro
       - ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
      deploy:
       resources:
        limits:
          cpus: '0.70'
          memory: 512M
        reservations:
          cpus: '0.5'
          memory: 256M
      env_file:
       - .env_db_mysql
       - .env_web
      secrets:
       - MYSQL_USER
       - MYSQL_PASSWORD
    #   - client-key.pem
    #   - client-cert.pem
    #   - root-ca.pem
      depends_on:
       - mysql-server
       - zabbix-server
      healthcheck:
       test: ["CMD", "curl", "-f", "http://localhost:8080/"]
       interval: 10s
       timeout: 5s
       retries: 3
       start_period: 30s
      networks:
       zbx_net_backend:
        aliases:
         - zabbix-web-apache-mysql
         - zabbix-web-apache-centos-mysql
         - zabbix-web-apache-mysql-centos
       zbx_net_frontend:
      stop_grace_period: 10s
      sysctls:
       - net.core.somaxconn=65535
      labels:
       com.zabbix.description: "Zabbix frontend on Apache web-server with MySQL database support"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "zabbix-frontend"
       com.zabbix.webserver: "apache2"
       com.zabbix.dbtype: "mysql"
       com.zabbix.os: "centos"
    
     zabbix-web-nginx-mysql:
      image: zabbix/zabbix-web-nginx-mysql:centos-5.4-latest
      ports:
       - "80:8080"
       - "443:8443"
      volumes:
       - /etc/localtime:/etc/localtime:ro
       - /etc/timezone:/etc/timezone:ro
       - ./zbx_env/etc/ssl/nginx:/etc/ssl/nginx:ro
       - ./zbx_env/usr/share/zabbix/modules/:/usr/share/zabbix/modules/:ro
      deploy:
       resources:
        limits:
          cpus: '0.70'
          memory: 512M
        reservations:
          cpus: '0.5'
          memory: 256M
      env_file:
       - .env_db_mysql
       - .env_web
      secrets:
       - MYSQL_USER
       - MYSQL_PASSWORD
    #   - client-key.pem
    #   - client-cert.pem
    #   - root-ca.pem
      depends_on:
       - mysql-server
       - zabbix-server
      healthcheck:
       test: ["CMD", "curl", "-f", "http://localhost:8080/"]
       interval: 10s
       timeout: 5s
       retries: 3
       start_period: 30s
      networks:
       zbx_net_backend:
        aliases:
         - zabbix-web-nginx-mysql
         - zabbix-web-nginx-centos-mysql
         - zabbix-web-nginx-mysql-centos
       zbx_net_frontend:
      stop_grace_period: 10s
      sysctls:
       - net.core.somaxconn=65535
      labels:
       com.zabbix.description: "Zabbix frontend on Nginx web-server with MySQL database support"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "zabbix-frontend"
       com.zabbix.webserver: "nginx"
       com.zabbix.dbtype: "mysql"
       com.zabbix.os: "centos"
    
     zabbix-agent:
      image: zabbix/zabbix-agent:centos-5.4-latest
      profiles:
       - full
       - all
      ports:
       - "10050:10050"
      volumes:
       - /etc/localtime:/etc/localtime:ro
       - /etc/timezone:/etc/timezone:ro
       - ./zbx_env/etc/zabbix/zabbix_agentd.d:/etc/zabbix/zabbix_agentd.d:ro
       - ./zbx_env/var/lib/zabbix/modules:/var/lib/zabbix/modules:ro
       - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
       - ./zbx_env/var/lib/zabbix/ssh_keys:/var/lib/zabbix/ssh_keys:ro
      deploy:
       resources:
        limits:
          cpus: '0.2'
          memory: 128M
        reservations:
          cpus: '0.1'
          memory: 64M
       mode: global
      env_file:
       - .env_agent
      privileged: true
      pid: "host"
      networks:
       zbx_net_backend:
        aliases:
         - zabbix-agent
         - zabbix-agent-passive
         - zabbix-agent-centos
      stop_grace_period: 5s
      labels:
       com.zabbix.description: "Zabbix agent"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "zabbix-agentd"
       com.zabbix.os: "centos"
    
     zabbix-java-gateway:
      image: zabbix/zabbix-java-gateway:centos-5.4-latest
      profiles:
       - full
       - all
      ports:
       - "10052:10052"
      deploy:
       resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M
      env_file:
       - .env_java
      networks:
       zbx_net_backend:
        aliases:
         - zabbix-java-gateway
         - zabbix-java-gateway-centos
      stop_grace_period: 5s
      labels:
       com.zabbix.description: "Zabbix Java Gateway"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "java-gateway"
       com.zabbix.os: "centos"
    
     zabbix-snmptraps:
      image: zabbix/zabbix-snmptraps:centos-5.4-latest
      profiles:
       - full
       - all
      ports:
       - "162:1162/udp"
      volumes:
       - snmptraps:/var/lib/zabbix/snmptraps:rw
      deploy:
       resources:
        limits:
          cpus: '0.5'
          memory: 256M
        reservations:
          cpus: '0.25'
          memory: 128M
      networks:
       zbx_net_frontend:
        aliases:
         - zabbix-snmptraps
       zbx_net_backend:
      stop_grace_period: 5s
      labels:
       com.zabbix.description: "Zabbix snmptraps"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "snmptraps"
       com.zabbix.os: "centos"
    
     zabbix-web-service:
      image: zabbix/zabbix-web-service:centos-5.4-latest
      profiles:
       - full
       - all
      ports:
       - "10053:10053"
      cap_add:
       - SYS_ADMIN
      volumes:
       - ./zbx_env/var/lib/zabbix/enc:/var/lib/zabbix/enc:ro
      deploy:
       resources:
        limits:
          cpus: '0.5'
          memory: 512M
        reservations:
          cpus: '0.25'
          memory: 256M
      env_file:
       - .env_web_service
      networks:
       zbx_net_backend:
        aliases:
         - zabbix-web-service
         - zabbix-web-service-centos
      stop_grace_period: 5s
      labels:
       com.zabbix.description: "Zabbix web service"
       com.zabbix.company: "Zabbix LLC"
       com.zabbix.component: "web-service"
       com.zabbix.os: "centos"
    
     mysql-server:
      image: mysql:8.0
      command:
       - mysqld
       - --character-set-server=utf8
       - --collation-server=utf8_bin
       - --default-authentication-plugin=mysql_native_password
    #   - --require-secure-transport
    #   - --ssl-ca=/run/secrets/root-ca.pem
    #   - --ssl-cert=/run/secrets/server-cert.pem
    #   - --ssl-key=/run/secrets/server-key.pem
      volumes:
       - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw
      env_file:
       - .env_db_mysql
      secrets:
       - MYSQL_USER
       - MYSQL_PASSWORD
       - MYSQL_ROOT_PASSWORD
    #   - server-key.pem
    #   - server-cert.pem
    #   - root-ca.pem
      stop_grace_period: 1m
      networks:
       zbx_net_backend:
        aliases:
         - mysql-server
         - zabbix-database
         - mysql-database
    
     db_data_mysql:
      image: busybox
      volumes:
       - ./zbx_env/var/lib/mysql:/var/lib/mysql:rw
    
    # elasticsearch:
    #  image: elasticsearch
    #  profiles:
    #   - full
    #   - all
    #  environment:
    #   - transport.host=0.0.0.0
    #   - discovery.zen.minimum_master_nodes=1
    #  networks:
    #   zbx_net_backend:
    #    aliases:
    #     - elasticsearch
    
    networks:
      zbx_net_frontend:
        driver: bridge
        driver_opts:
          com.docker.network.enable_ipv6: "false"
        ipam:
          driver: default
          config:
          - subnet: 172.16.238.0/24
      zbx_net_backend:
        driver: bridge
        driver_opts:
          com.docker.network.enable_ipv6: "false"
        internal: true
        ipam:
          driver: default
          config:
          - subnet: 172.16.239.0/24
    
    volumes:
      snmptraps:
    
    secrets:
      MYSQL_USER:
        file: ./.MYSQL_USER
      MYSQL_PASSWORD:
        file: ./.MYSQL_PASSWORD
      MYSQL_ROOT_PASSWORD:
        file: ./.MYSQL_ROOT_PASSWORD
    #  client-key.pem:
    #    file: ./.ZBX_DB_KEY_FILE
    #  client-cert.pem:
    #    file: ./.ZBX_DB_CERT_FILE
    #  root-ca.pem:
    #    file: ./.ZBX_DB_CA_FILE
    #  server-cert.pem:
    #    file: ./.DB_CERT_FILE
    #  server-key.pem:
    #    file: ./.DB_KEY_FILE
    
    
    拥抱不确定,未来可期!喜欢该文章请不吝点赞推荐,如有疑问欢迎留言,我们一起探讨。
  • 相关阅读:
    20165323《Java程序设计》第九周学习总结
    20165323 实验三 敏捷开发与XP实践
    20165323 结对编程之四则运算week2-整体总结
    20165334 20165311 20165329 实验四外设驱动程序设计
    实验四
    20165311 《信息安全系统设计基础》第七周学习
    20165311 《信息安全系统设计基础》第六周学习总结
    20165311 《信息安全系统设计基础》第四周学习总结
    20165311 20165334 20165329实验一 开发环境的熟悉
    2018 第三周 20165311 缓冲区溢出漏洞实验和第三周学习总结
  • 原文地址:https://www.cnblogs.com/yang-ning/p/15049129.html
Copyright © 2020-2023  润新知