阅前必知:我的Ubuntu22.04.5系统用户名为:caleb 请自行替换
1. 更换系统源为阿里云
# 备份旧源
sudo cp /etc/apt/sources.list /etc/apt/sources.list.bak
# 一键替换为阿里云源 (针对 Ubuntu 22.04)
sudo sed -i 's/http:\/\/.*archive.ubuntu.com/http:\/\/mirrors.aliyun.com/g' /etc/apt/sources.list
sudo sed -i 's/http:\/\/.*security.ubuntu.com/http:\/\/mirrors.aliyun.com/g' /etc/apt/sources.list
# 更新缓存并安装必备工具
sudo apt-get update
sudo apt-get install -y git vim curl net-tools ca-certificates gnupg lsb-release tree2. 安装 Docker (使用阿里云 APT 源,避开官网)
# 1. 创建密钥目录
sudo mkdir -p /etc/apt/keyrings
# 2. 下载并添加阿里云 Docker GPG 密钥
curl -fsSL https://mirrors.aliyun.com/docker-ce/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
# 3. 写入阿里云 Docker 仓库地址
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://mirrors.aliyun.com/docker-ce/linux/ubuntu $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# 4. 更新源并安装 Docker 全家桶
sudo apt-get update
sudo apt-get install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 5. 启动 Docker
sudo systemctl start docker
sudo systemctl enable docker安装完成后,我们验证一下这套“全栈标准环境”是不是到位了:
1. 查看最新版本号:
docker compose version(你应该能看到类似 Docker Compose version v2.x.x 的字样)
2. 重新打通你的 caleb 用户权限:
# 以管理员身份,安全地把 caleb 追加到 docker 白名单组里
sudo usermod -aG docker caleb
newgrp docker
#newgrp命令是为了**免除重启/注销**,强制刷新当前终端窗口的组身份,让你立刻拥有 docker 组的施法权限3.创建并配置守护进程文件
这会覆盖或创建 /etc/docker/daemon.json 文件,解决Docker Hub 官方仓库网络连通性问题,并注入目前相对稳定的国内镜像代理源。
sudo mkdir -p /etc/docker
sudo tee /etc/docker/daemon.json <<-'EOF'
{
"registry-mirrors": [
"https://docker.m.daocloud.io",
"https://docker.nju.edu.cn",
"https://dockerproxy.com"
]
}
EOF4.内核与 Docker 读取新配置的命令
sudo systemctl daemon-reload
sudo systemctl restart docker既然环境现在是最新、最标准的了,我们把刚才没建完的数据基建目录一口气建好:
1.创建目录
mkdir -p /home/caleb/zabbix-docker
cd /home/caleb/zabbix-docker
mkdir -p mysql-data zabbix-server zabbix-web2.编写 docker-compose.yml
cd /home/caleb/zabbix-docker
vim docker-compose.ymlversion: '3.8'
networks:
zabbix-net:
driver: bridge
services:
mysql-server:
image: mysql:8.0
container_name: zabbix-mysql
networks:
- zabbix-net
ports:
# 安全建议:若仅限内网使用,改为 "127.0.0.1:${MYSQL_PORT:-3306}:3306"
- "${MYSQL_PORT:-3306}:3306"
environment:
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
volumes:
- ./mysql-data:/var/lib/mysql
command:
- mysqld
- --character-set-server=utf8mb4
- --collation-server=utf8mb4_bin
- --default-authentication-plugin=mysql_native_password
- --log_bin_trust_function_creators=1
healthcheck:
test: ["CMD", "mysqladmin", "ping", "-h", "localhost", "-u", "root", "-p${MYSQL_ROOT_PASSWORD}"]
interval: 10s
timeout: 5s
retries: 5
start_period: 40s # 首次启动生成表结构耗时较长,提供 40 秒宽限期
zabbix-server:
image: zabbix/zabbix-server-mysql:ubuntu-6.0-latest
container_name: zabbix-server
networks:
- zabbix-net
ports:
- "10051:10051"
environment:
- DB_SERVER_HOST=mysql-server
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- MYSQL_ROOT_PASSWORD=${MYSQL_ROOT_PASSWORD}
depends_on:
mysql-server:
condition: service_healthy
volumes:
- ./zabbix-server:/usr/lib/zabbix/alertscripts
zabbix-web:
image: zabbix/zabbix-web-nginx-mysql:ubuntu-6.0-latest
container_name: zabbix-web
networks:
- zabbix-net
ports:
- "${WEB_PORT:-80}:8080"
environment:
- ZBX_SERVER_HOST=zabbix-server
- DB_SERVER_HOST=mysql-server
- MYSQL_DATABASE=${MYSQL_DATABASE}
- MYSQL_USER=${MYSQL_USER}
- MYSQL_PASSWORD=${MYSQL_PASSWORD}
- PHP_TZ=${TIMEZONE:-Asia/Shanghai}
depends_on:
mysql-server:
condition: service_healthy
zabbix-server:
condition: service_started
1. 一键启动集群
在 docker-compose.yml 所在的目录(/home/caleb/zabbix-docker)下,执行以下命令:
docker compose up -d2. 观察集群状态 (项目化思维) 在 Compose 的目录里,使用以下命令查看这组关联容器的状态:
docker compose ps确保这三个容器的 STATUS 都显示为 Up。
3. 查看实时日志 (核心排错能力)
这是你验证数据库是否成功初始化的关键。由于我们配置了自动创建 zabbix 数据库,MySQL 首次启动时需要花费十几秒钟初始化。 执行以下命令实时观察启动日志:
docker compose logs -f如果你在日志中看到 zabbix-server 提示连接数据库成功,且没有不断重启的报错,按 Ctrl+C 退出日志跟踪。
4. 终极验证 打开你本机的浏览器,输入 http://143主机的IP:80。 你应该能直接看到 Zabbix 的登录界面(账号:Admin,密码:zabbix)。