在宿主机安装docker之后,部署三个容器,分别是:
zabbix-server-mysql
zabbix-mysql-server
zabbix-web-nginx-mysql
部署完成之后,zabbix服务器访问正常,但是Zabbix-server的状态一直异常,如下图:
172.17.0.3是docker内部网络中容器的IP地址。
经过多方查询文档及实际操作,总结如下:
- zabbix容器中无法配置agent;
- Zabbix-server为宿主机,IP地址为宿主机和容器相连的容器内部地址,172.17.0.1。
但是,在给宿主机部署zabbix-agent之后,状态一直异常,如下图:
怎么试都不行,于是想着重启机器试一下,然后悲剧了。
系统启动docker正常。
docker启动zabbix-mysql-server正常。
但是到了zabbix-server-mysql,失败!
[root@oel79 ~]# docker start zabbix-server-mysql
Error response from daemon: driver failed programming external connectivity on endpoint zabbix-server-mysql (b2e4e8c6abd428a2decc64a914d7a8b3e6dddddc4dd0e418bbd4b395391fde40): Error starting userland proxy: listen tcp4 0.0.0.0:10050: bind: address already in use
Error: failed to start containers: zabbix-server-mysql
[root@oel79 ~]#
如上所示,提示映射到容器ZABBIX的端口已经被使用。
由此,联想到zabbix-agent默认端口也是10050,于是操作如下:
修改/etc/zabbix/zabbix-agentd.conf文件,listenport修改为10055。
然后,宿主机的zabbix-agent服务正常启动,容器zabbix-server-mysql启动正常。
在ZABBIX管理界面,主机配置界面把Zabbix server的IP地址修改为172.17.0.1,端口修改为10050,问题彻底解决。
总结:宿主机的zabbix-agent的listenport和容器zabbix-server-mysql的映射端口都是10050,冲突!