Skip to content

server_offline_docker

遇见王斌 edited this page Feb 21, 2018 · 10 revisions

简介

1 环境准备

  • CentOS7.3
    • 安装 Docker 可以查看 手册 中 Docker 安装部分
  • 其他系统
    • 安装 Docker 环境即可

2 离线部署 Zabbix server 容器

2.1 下载并导入 Zabbix 镜像

注意:百度云上镜像可能不是最新的镜像,最好是在有网环境下直接导出新的镜像进行离线使用

百度云下载 密码:b0w5

导入镜像

#docker load -i zabbix3.0.6_20171026.tar

2.2 Bridge 网络模式运行容器

#docker run -d  \
--restart always \
-p 10051:10051 \
-p 10080:80 \
-p 2812:2812 \
-v /var/lib/zabbix/:/var/lib/mysql \
-v /etc/zabbix/alert:/etc/zabbix/alert \
--name zabbix meetbill/zabbix

执行上述命令后,会使用 meetbill/zabbix 镜像,并指定启动后的容器名字为 zabbix,启动容器后,会花费一点儿时间初始化数据库,可以通过下面命令查看初始化数据库进度

同时运行容器时加

  • -v /var/lib/zabbix:/var/lib/mysql 将 mysql 数据存储在本地目录 /var/lib/zabbix 中
  • -v /etc/zabbix/alert:/etc/zabbix/alert 可以在此目录配置邮件监控发送邮箱配置
#docker logs -f zabbix
-------------------------------------------------------------- 出现以下内容初始化 OK
Running Monit...
'mysqld' process is not running
 New Monit id: 82f51c8f1808824fa723284546da261e
 Stored in '/root/.monit.id'
Starting Monit 5.22.0 daemon with http interface at [*]:2812
'98a2937cc0ee' Monit 5.22.0 started
'mysqld' trying to restart
'mysqld' start: '/sbin/service mysqld start'
'mysqld' process is running with pid 567
'zabbix-server' start: '/sbin/service zabbix-server start'
'nginx' start: '/sbin/service nginx start'
'php-fpm' trying to restart
'php-fpm' start: '/sbin/service php-fpm start'
'php-fpm' process is not running
'php-fpm' process is running with pid 670

访问http://IP:10080进行访问 Zabbix

2.3 Host 网络模式运行容器 - 推荐

容器和主机共用网络资源,使用宿主机的 IP 和端口

#docker run -d --network=host --restart always  -v /var/lib/zabbix/:/var/lib/mysql -v /etc/zabbix/alert:/etc/zabbix/alert --name zabbix meetbill/zabbix

对于 Zabbix 来说是个比较好的选择,因为 Zabbix 容器使用这种方式时,物理机器的 zabbix agent 无需连接 zabbix 的容器 IP

访问http://IP进行访问 zabbix

3 Bridge 和 Host 网络模式区别

  • Bridge 模式
    • 将主机上的 Zabbix server 容器连接到 Docker 创建的虚拟网桥上,Zabbix server 容器的 IP 是个虚拟网桥上虚拟出的 IP
  • Host 模式
    • Zabbix server 容器的 IP 和物理 IP 一致

使用 Bridge 模式时,安装 Zabbix server 容器的物理机使用 Zabbix agent 自动注册时,假如填写的 Zabbix server IP 填的容器所在的物理机器的 IP,被动监控时,Zabbix server 去访问 Agent 时,使用的是Zabbix server 容器 IP ,则无法获取监控内容

使用 Bridge 模式时想要正常访问,Zabbix server 所在物理机的 Agent 需要在配置文件中 Server 地址填写 Zabbix server 的容器 IP ,有两点不便

  • (1) 容器 IP 启动后可能会发生变化
  • (2) Server 所在容器的物理机在 Zabbix server 中的 IP 是 Docker 虚拟网段的 IP,而不是物理网卡 IP,假如对接第三方监控时,需要对此机器进行特殊处理

所以建议使用 Host 网络模式启动 Zabbix server 容器

4 导出 Zabbix 镜像

docker save -o zabbix3.0.6_20171026.tar meetbill/zabbix