# DockerV19.03.1搭建Zabbix4.2.5全流程指南
## 一、環境準備與規劃
### 1.1 系統要求
- **操作系統**:Ubuntu 18.04 LTS / CentOS 7.6+
- **Docker版本**:19.03.1(需驗證`docker --version`)
- **硬件配置**:
- 最低配置:2核CPU/4GB內存/20GB磁盤
- 推薦配置:4核CPU/8GB內存/50GB磁盤(生產環境)
### 1.2 網絡規劃建議
| 服務名稱 | 容器端口 | 宿主機端口 | 協議 |
|----------------|----------|------------|-------|
| Zabbix Server | 10051 | 10051 | TCP |
| Zabbix Web | 80 | 8080 | TCP |
| MySQL | 3306 | 3306 | TCP |
| Zabbix Agent | 10050 | 10050 | TCP |
## 二、Docker環境配置
### 2.1 安裝Docker CE 19.03.1
```bash
# Ubuntu示例
sudo apt-get update
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable"
sudo apt-get update
sudo apt-get install -y docker-ce=5:19.03.1~3-0~ubuntu-$(lsb_release -cs)
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": ["https://registry.docker-cn.com"]
}
EOF
sudo systemctl restart docker
docker network create --subnet 172.20.0.0/16 zabbix-net
docker run -d \
--name zabbix-mysql \
--network zabbix-net \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e MYSQL_ROOT_PASSWORD="root_pwd" \
-v /data/mysql:/var/lib/mysql \
-p 3306:3306 \
mysql:5.7 \
--character-set-server=utf8 \
--collation-server=utf8_bin
docker run -d \
--name zabbix-server \
--network zabbix-net \
-e DB_SERVER_HOST="zabbix-mysql" \
-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" \
-v /etc/localtime:/etc/localtime:ro \
-v /data/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
-v /data/zabbix/externalscripts:/usr/lib/zabbix/externalscripts \
-p 10051:10051 \
zabbix/zabbix-server-mysql:4.2.5
docker run -d \
--name zabbix-web \
--network zabbix-net \
-e DB_SERVER_HOST="zabbix-mysql" \
-e MYSQL_DATABASE="zabbix" \
-e MYSQL_USER="zabbix" \
-e MYSQL_PASSWORD="zabbix_pwd" \
-e PHP_TZ="Asia/Shanghai" \
-p 8080:80 \
zabbix/zabbix-web-nginx-mysql:4.2.5
# 等待MySQL容器完全啟動(約2分鐘)
sleep 120
# 導入初始schema
docker exec -i zabbix-mysql mysql -uroot -proot_pwd zabbix < /usr/share/doc/zabbix-server-mysql*/create.sql.gz
http://<宿主IP>:8080
docker run -d \
--name zabbix-agent \
--network zabbix-net \
-e ZBX_HOSTNAME="docker-host" \
-e ZBX_SERVER_HOST="zabbix-server" \
-e ZBX_SERVER_PORT=10051 \
-v /:/rootfs:ro \
-v /var/run:/var/run:ro \
-v /sys:/sys:ro \
--privileged \
zabbix/zabbix-agent:4.2.5
Name: Docker Network Discovery
IP range: 172.20.0.1-172.20.0.254
Checks: Zabbix agent "system.uname"
問題現象 | 可能原因 | 解決方案 |
---|---|---|
Web界面502錯誤 | PHP-FPM未啟動 | docker restart zabbix-web |
Server無法連接MySQL | 數據庫未初始化完成 | 等待5分鐘后檢查日志 |
監控數據不更新 | 時間不同步 | 檢查容器時區配置 |
# 查看Server日志
docker logs -f zabbix-server
# 查看MySQL日志
docker exec zabbix-mysql tail -f /var/log/mysql/error.log
docker update \
--cpus 2 \
--memory 4g \
--memory-swap 6g \
zabbix-server
# 在MySQL容器中創建my.cnf
docker exec -it zabbix-mysql bash -c 'cat > /etc/mysql/conf.d/zabbix.cnf <<EOF
[mysqld]
innodb_buffer_pool_size=1G
innodb_log_file_size=256M
max_connections=200
EOF'
docker exec zabbix-mysql mysqldump -uroot -proot_pwd zabbix | gzip > zabbix_backup_$(date +%Y%m%d).sql.gz
tar czvf zabbix_configs_$(date +%Y%m%d).tar.gz /data/zabbix
docker stop zabbix-web && docker rm zabbix-web
docker pull zabbix/zabbix-web-nginx-mysql:4.4.0
# 使用原有參數重新運行容器
注意事項:本文基于Docker 19.03.1和Zabbix 4.2.5編寫,其他版本可能需要調整配置參數。生產環境部署前建議進行充分測試。 “`
該文檔包含約2300字,采用Markdown格式編寫,包含: - 多級標題結構 - 代碼塊(bash命令) - 表格(環境規劃/問題排查) - 有序/無序列表 - 強調文本(> 注意事項) - 網絡拓撲說明 - 版本兼容性提示
可根據實際環境需求調整端口映射、密碼等參數。建議部署前通讀全文理解各組件關系。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。