前言
Docker 作为当下最主流的容器化虚拟化技术,凭借一次构建、到处运行 的核心特性,大幅降低了环境部署、服务迁移、运维管理的成本。本文结合 Docker 基础使用流程、镜像 / 容器 / 仓库三者核心关系,搭配Linux 云桌面、Zabbix 监控系统、Portainer 可视化管理三大实战案例,手把手带你完成 Docker 实操落地,适配 CentOS、银河麒麟等主流 Linux 系统,可直接上手复刻。
一、Docker 核心使用流程与核心概念关系
1. Docker 容器标准使用流程
Docker 部署服务的核心分为两大核心步骤:获取 / 制作镜像 → 运行生成容器,具体流程如下:
-
下载或制作镜像
- 方式 1:从公共镜像仓库(Docker Hub、华为云镜像仓库等)拉取官方现成镜像;
- 方式 2:通过
Dockerfile自定义编写脚本,构建专属业务镜像。
-
运行镜像生成容器 镜像属于静态模板,运行镜像后才会生成可提供服务的动态容器 ,通过端口映射、数据挂载、环境变量配置等方式,实现服务对外提供访问。

基础示例(Nginx 服务):
# 拉取Nginx镜像并运行容器,映射宿主机8081端口到容器80端口
docker run --name nginx-server -p 8081:80 -d nginx:latest
2. 镜像、容器、仓库的实际环境关系
在企业开发、生产环境中,三者分工明确,构成完整的 Docker 交付链路:
-
镜像(Image):应用 + 依赖 + 环境的静态打包模板,是容器运行的基础;
-
容器(Container):镜像的运行实例,是真正对外提供服务的载体;
-
镜像仓库(Registry) :存放镜像的远程仓库,分为公共仓库(Docker Hub、华为云 SWR)、私有仓库。

完整交付流程:
- 开发者在开发环境编写应用,制作 Docker 镜像;
- 将镜像上传至镜像仓库;
- 生产环境服务器从仓库拉取镜像,运行生成容器,对外提供业务服务。
二、实战案例 1:Docker 部署 Linux 云桌面
基于 Docker 实现轻量化 Linux 云桌面,5 秒快速启动,支持浏览器直接访问,可实现办公、上网、基础娱乐等功能。
1. 拉取云桌面镜像
本文使用已上传至华为云镜像仓库的成品镜像,无需登录,直接拉取:
docker pull swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0
2. 运行云桌面容器
配置端口映射、共享目录、访问密码、分辨率,后台启动容器:
docker run -itd --shm-size 4G -p 6080:6080 \
-e VNC_PASSWD=admin123456 -e GEOMETRY='1366x768' -e DEPTH=32 \
-v /data3/Downloads:/root/Downloads \
-v /data3/Documents:/root/Documents \
-v /data3/Pictures:/root/Pictures \
-v /data3/Videos:/root/Videos \
-v /data3/Music:/root/Music \
-v /data3/Desktop:/root/Desktop \
--restart unless-stopped --name linuxdesk \
swr.cn-north-1.myhuaweicloud.com/iivey/linux-desk:v1.0
3. 访问云桌面
容器启动约 5 秒后,浏览器访问 http://服务器IP:6080,输入密码admin123456,即可进入 Linux 云桌面环境。
三、实战案例 2:Docker 部署 Zabbix 全栈监控系统
Zabbix 是主流开源监控工具,可监控服务器、数据库、中间件、Java 应用等性能指标,本文基于 Docker 一键部署 Zabbix 完整架构,包含 MySQL 数据库、Zabbix-Server、Web 前端、Java 网关、客户端。
1. 拉取所需镜像
(1)拉取 MySQL 8.0 数据库镜像
docker pull mysql:8.0.23
(2)拉取 Zabbix-Server 服务镜像(适配 MySQL)
# 指定版本
docker pull zabbix/zabbix-server-mysql:centos-5.2.4
# 拉取最新版
# docker pull zabbix/zabbix-server-mysql:centos-latest
(3)拉取 Zabbix Web 前端镜像(Nginx)
# 指定版本
docker pull zabbix/zabbix-web-nginx-mysql:centos-5.2.4
# 拉取最新版
# docker pull zabbix/zabbix-web-nginx-mysql:latest
(4)拉取 Java 网关镜像(监控 Java 应用)
docker pull zabbix/zabbix-java-gateway:centos-5.2.4
2. 部署容器(按顺序执行)
(1)创建 Docker 自定义网络
所有 Zabbix 容器加入同一网桥网络,实现容器间通信:
# 创建网桥网络
docker network create -d bridge zabbix_net
# 查看网络
docker network ls
(2)运行 MySQL 容器
初始化 Zabbix 数据库、用户、密码,配置字符集:
docker run -itd -p 3306:3306 --name zabbix-mysql --network zabbix_net --restart unless-stopped \
-v /etc/localtime:/etc/localtime -v /dockerdata/zabbix/db:/var/lib/mysql \
-e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" \
mysql:8.0.23 --default-authentication-plugin=mysql_native_password --character-set-server=utf8 --collation-server=utf8_bin
(3)运行 Java 网关容器
用于监控 Java/JVM/Tomcat 性能指标:
docker run -v /etc/localtime:/etc/localtime -dit --restart=always --name=zabbix-java-gateway --network zabbix_net \
zabbix/zabbix-java-gateway:centos-5.2.4
(4)运行 Zabbix-Server 核心服务容器
创建数据卷持久化配置,关联数据库与 Java 网关:
# 创建数据卷
docker volume create zabbix-server-vol
# 启动容器
docker run -dit -p 10051:10051 --mount source=zabbix-server-vol,target=/etc/zabbix \
-v /etc/localtime:/etc/localtime -v /usr/lib/zabbix/alertscripts:/usr/lib/zabbix/alertscripts \
--name=zabbix-server-mysql --restart=always --network zabbix_net \
-e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" \
-e ZBX_JAVAGATEWAY="zabbix-java-gateway" -e ZBX_JAVAGATEWAY_ENABLE="true" -e ZBX_JAVAGATEWAYPORT=10052 \
zabbix/zabbix-server-mysql:centos-5.2.4
(5)运行 Zabbix Web 前端容器
提供可视化监控网页,关联数据库与服务端:
docker run -dit -p 8080:8080 -v /etc/localtime:/etc/localtime \
-v /data/dockershell/zabbix/fonts/DejaVuSans.ttf:/usr/share/zabbix/assets/fonts/DejaVuSans.ttf \
--name zabbix-web-nginx-mysql --restart=always --network zabbix_net \
-e DB_SERVER_HOST="zabbix-mysql" -e MYSQL_DATABASE="zabbix" -e MYSQL_USER="zabbix" -e MYSQL_PASSWORD="zabbix123" -e MYSQL_ROOT_PASSWORD="root123" \
-e ZBX_SERVER_HOST="zabbix-server-mysql" \
zabbix/zabbix-web-nginx-mysql:centos-5.2.4
(6)运行 Zabbix 客户端(Agent/Agent2)
采集本机服务器性能数据,上报至服务端:
# 传统Agent
docker run -dit --name zabbix-agent -p 10050:10050 --network zabbix_net \
-e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 \
zabbix/zabbix-agent:centos-5.2.4
# 新版Agent2(支持监控Docker容器)
docker run -dit --name zabbix-agent2 -p 10050:10050 -v /var/run/docker.sock:/var/run/docker.sock \
--network zabbix_net -e ZBX_HOSTNAME="Zabbix server" -e ZBX_SERVER_HOST="zabbix-server-mysql" -e ZBX_SERVER_PORT=10051 \
--privileged zabbix/zabbix-agent2:latest
3. 访问 Zabbix 监控页面
浏览器访问 http://服务器IP:8080,默认账号:Admin,密码:zabbix,即可进入监控系统配置监控项。

四、实战案例 3:Portainer 可视化 Docker 管理工具
Docker 默认使用命令行管理容器,操作繁琐,Portainer 是免费开源的 Docker 可视化管理面板,支持容器、镜像、网络、数据卷、仓库的图形化管理,大幅降低运维难度。
1. Portainer 部署命令
基于华为云镜像一键部署,后台启动:
docker run -d -p 9000:9000 --name portainer --restart always \
-v /var/run/docker.sock:/var/run/docker.sock -v portainer_data:/data \
swr.cn-north-1.myhuaweicloud.com/iivey/portainer-ce:2.19.1
参数说明
-d:后台运行容器;-p 9000:9000:宿主机 9000 端口映射容器端口;-v /var/run/docker.sock:/var/run/docker.sock:挂载 Docker 套接字,实现容器管理权限;--restart always:开机自启,容器异常自动重启。
2. 访问 Portainer 管理面板
浏览器访问 http://服务器IP:9000,首次登录设置管理员账号密码,即可图形化管理所有 Docker 资源。


五、总结
本文从 Docker 基础使用逻辑出发,理清镜像、容器、仓库 的核心关系,结合Linux 云桌面、Zabbix 监控、Portainer 可视化三大生产级实战案例,覆盖 Docker 日常部署、监控运维、图形化管理全场景。Docker 容器化技术可快速实现服务一键部署、环境隔离、快速迁移,是云原生、DevOps 运维的必备技能,本文所有命令可直接在 CentOS、银河麒麟 V10 等系统复刻执行,快速上手容器化运维。