Docker 实战教程:从基础流程到云桌面、Zabbix 监控、Portainer 可视化部署

前言

Docker 作为当下最主流的容器化虚拟化技术,凭借一次构建、到处运行 的核心特性,大幅降低了环境部署、服务迁移、运维管理的成本。本文结合 Docker 基础使用流程、镜像 / 容器 / 仓库三者核心关系,搭配Linux 云桌面、Zabbix 监控系统、Portainer 可视化管理三大实战案例,手把手带你完成 Docker 实操落地,适配 CentOS、银河麒麟等主流 Linux 系统,可直接上手复刻。

一、Docker 核心使用流程与核心概念关系

1. Docker 容器标准使用流程

Docker 部署服务的核心分为两大核心步骤:获取 / 制作镜像 → 运行生成容器,具体流程如下:

  1. 下载或制作镜像

    • 方式 1:从公共镜像仓库(Docker Hub、华为云镜像仓库等)拉取官方现成镜像;
    • 方式 2:通过Dockerfile自定义编写脚本,构建专属业务镜像。
  2. 运行镜像生成容器 镜像属于静态模板,运行镜像后才会生成可提供服务的动态容器 ,通过端口映射、数据挂载、环境变量配置等方式,实现服务对外提供访问。

基础示例(Nginx 服务):

复制代码
# 拉取Nginx镜像并运行容器,映射宿主机8081端口到容器80端口
docker run --name nginx-server -p 8081:80 -d nginx:latest

2. 镜像、容器、仓库的实际环境关系

在企业开发、生产环境中,三者分工明确,构成完整的 Docker 交付链路:

  1. 镜像(Image):应用 + 依赖 + 环境的静态打包模板,是容器运行的基础;

  2. 容器(Container):镜像的运行实例,是真正对外提供服务的载体;

  3. 镜像仓库(Registry) :存放镜像的远程仓库,分为公共仓库(Docker Hub、华为云 SWR)、私有仓库。

完整交付流程:

  1. 开发者在开发环境编写应用,制作 Docker 镜像;
  2. 将镜像上传至镜像仓库
  3. 生产环境服务器从仓库拉取镜像,运行生成容器,对外提供业务服务。

二、实战案例 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 等系统复刻执行,快速上手容器化运维。

相关推荐
skywalk81632 小时前
nginx的配置软件Nginx UI
运维·nginx·ui
A_humble_scholar2 小时前
Linux (一)入门指南:历史、常用指令、权限与文件属性详解
linux·运维·服务器
skywalk81632 小时前
在Ubuntu安装言律并部署playground web网页
linux·运维·ubuntu
yyuuuzz2 小时前
独立站搭建的几个核心技术问题
运维·服务器·网络·数据库·aws
Peace2 小时前
【Ansible】
linux·运维·ansible
木雷坞2 小时前
n8n Docker Compose 部署:Postgres、Webhook 和数据卷配置
运维·docker·容器
我的世界洛天依2 小时前
停服公告-柴框云
运维
程序猿阿伟2 小时前
《Opencloak代理的自动化验证指南》
java·运维·自动化
zhangfeng11332 小时前
htop命令根据实际Linux环境下的讲解,结合国家超算中心hpc
linux·运维·服务器