Deploying Zabbix Using Docker

docker run --name mysql-server -t \

  -v /data/mysql/data:/var/lib/mysql \
  -e MYSQL_DATABASE="zabbix" \
  -e MYSQL_USER="zabbix" \
  -e MYSQL_PASSWORD="123456" \
  -e MYSQL_ROOT_PASSWORD="123456" \
  --restart=unless-stopped \
  -p 3306:3306 \
  -d mysql:8.0 \
  --character-set-server=utf8 --collation-server=utf8_bin \
  --default-authentication-plugin=mysql_native_password

MySQL data persistence is achieved through this command. </div>2. Deploy Zabbix Java Gateway <div>```

# docker run --name zabbix-java-gateway -t \
      --restart=unless-stopped \
      -d zabbix/zabbix-java-gateway

docker run --name zabbix-server-mysql -t \

  -e DB_SERVER_HOST="192.168.4.11" \
  -e MYSQL_DATABASE="zabbix" \
  -e MYSQL_USER="zabbix" \
  -e MYSQL_PASSWORD="123456" \
  -e MYSQL_ROOT_PASSWORD="123456" \
  -e ZBX_JAVAGATEWAY="zabbix-java-gateway" \
  --link mysql-server:mysql \
  --link zabbix-java-gateway:zabbix-java-gateway \
  --restart=unless-stopped \
  -p 10051:10051 \
  -d zabbix/zabbix-server-mysql

The --link paramter allows communication between the MySQL and Java Gateway containers. </div>4. Deploy Web Interface <div>```

# docker run --name zabbix-web-nginx-mysql -t \
      -e PHP_TZ="Asia/Shanghai" \
      -e ZBX_SERVER_HOST="zabbix-server-mysql" \
      -e DB_SERVER_HOST="192.168.4.11" \
      -e MYSQL_DATABASE="zabbix" \
      -e MYSQL_USER="zabbix" \
      -e MYSQL_PASSWORD="123456" \
      -e MYSQL_ROOT_PASSWORD="123456" \
      --link mysql-server:mysql \
      --link zabbix-server-mysql:zabbix-server \
      -p 80:8080 \
      --restart unless-stopped \
      -d zabbix/zabbix-web-nginx-mysql

docker run --name zabbix-agent -t \

  -e ZBX_HOSTNAME="host-01" \
  -e ZBX_SERVER_HOST="172.17.1.6" \
  -e ZBX_SERVER_PORT=10051 \
  -p 10050:10050 \
  --restart=unless-stopped \
  --privileged \
  -d zabbix/zabbix-agent

If the agent is deployed on the Zabbix server, the ZBX_SERVER_HOST should be the container IP, not the host IP. </div>6. Summary Issue: Docker containers cannot ping the host gateway. <div>```

Method 1: Upgrade kernel
Method 2: Create a custom bridge
# systemctl stop docker
# ifconfig docker0 down
# brctl delbr docker0
# brctl addbr docker0
# ip addr add 172.17.2.1/24 dev docker0
# ip link set dev docker0 up
# vim /etc/docker/daemon.json 
  {"bip":"172.17.1.1/24"}
# systemctl daemon-reload
# systemctl restart iptables
# systemctl restart docker

Tags: docker Zabbix MySQL containerization web-interface

Posted on Sat, 01 Aug 2026 16:18:47 +0000 by Remote4ever