https://chat.deepseek.com/share/iwf2d72ef7i2034n9j
以下是根据当前系统环境生成的 Docker 容器部署与运维操作总结,内容涵盖所有运行中的容器、镜像、端口映射、配置要点及维护建议,可直接作为运维或故障排查参考。
Docker 容器部署与运维总结报告
一、概述
当前物理机(主机名 inspur-PowerEdge-R710)上通过 Docker 运行了 9 个容器,全部处于 Up 状态。这些容器共同构成了一套完整的 智能制造执行系统(MES) 开发/测试环境,包含以下核心服务:
- 数据库层:MySQL(主从)、ClickHouse、Redis
- 存储层:MinIO(主-从架构)
- 业务层:imes-server(Java 后端)、imes-ui(前端)
- 消息层:Mosquitto(MQTT)
所有容器均通过宿主机端口映射对外提供服务,便于外部访问和调试。
二、容器详细信息汇总
1. imes-minio-server(MinIO 主节点)
| 属性 |
值 |
| 容器 ID |
fb9768544395 |
| 镜像 |
swr.cn-north-4.myhuaweicloud.com/ddn-k8s/quay.io/minio/minio:RELEASE.2025-04-08T15-41-24Z |
| 状态 |
Up 41 min |
| 端口映射 |
9090→9090/tcp(Console API)
39001→9001/tcp(MinIO Console Web UI) |
| 主要用途 |
提供对象存储主节点,处理读写请求 |
| 注意 |
Console Web 访问地址:http://<宿主机IP>:39001,API 地址:http://<宿主机IP>:9090 |
2. imes-minio-slave(MinIO 从节点)
| 属性 |
值 |
| 容器 ID |
df88bf4f54d9 |
| 镜像 |
同上 |
| 状态 |
Up 40 min |
| 端口映射 |
49001→9001/tcp(Web UI)
49090→9090/tcp(API) |
| 主要用途 |
作为 MinIO 从节点,用于同步或灾备 |
| 注意 |
Console 地址:http://<宿主机IP>:49001,API 地址:http://<宿主机IP>:49090 |
3. imes-mysql-server-33106(MySQL 主库)
| 属性 |
值 |
| 容器 ID |
77acd7c09283 |
| 镜像 |
mysql:8.0 |
| 状态 |
Up 20 h |
| 端口映射 |
33106→3306/tcp |
| 主要用途 |
MES 业务主数据库 |
| 环境要点 |
默认 MySQL 8.0,需设置 root 密码(未在命令中体现,建议通过 docker inspect 查看 MYSQL_ROOT_PASSWORD) |
4. imes-mysql-slave(MySQL 从库)
| 属性 |
值 |
| 容器 ID |
d93ac1a0839b |
| 镜像 |
mysql:8.0 |
| 状态 |
Up 5 h |
| 端口映射 |
33206→3306/tcp |
| 主要用途 |
主库的同步从库,用于读写分离或备份 |
| 注意 |
需要确认主从复制状态,定期检查 SHOW SLAVE STATUS |
5. imes-clickhouse-server(ClickHouse 分析库)
| 属性 |
值 |
| 容器 ID |
5a914dfe146d |
| 镜像 |
clickhouse/clickhouse-server:24.8.4 |
| 状态 |
Up 20 h |
| 端口映射 |
8123→8123/tcp(HTTP)
9000→9000/tcp(Native TCP)
9009→9009/tcp(内部复制) |
| 主要用途 |
存储时序数据或分析型数据(如生产日志、指标) |
| 访问方式 |
JDBC:jdbc:clickhouse://<IP>:8123,或者 clickhouse-client --port 9000 |
6. imes-redis-36379(Redis 缓存)
| 属性 |
值 |
| 容器 ID |
d49fd61005bc |
| 镜像 |
redis:latest |
| 状态 |
Up 20 h |
| 端口映射 |
36379→6379/tcp |
| 主要用途 |
缓存 session、热点数据、分布式锁 |
| 注意 |
未设置密码(建议生产环境配置 --requirepass) |
7. imes-mosquitto(MQTT Broker)
| 属性 |
值 |
| 容器 ID |
6508d7dad8fe |
| 镜像 |
harbor.iit-rdc.com:30443/mes/eclipse-mosquitto:latest |
| 状态 |
Up 20 h |
| 端口映射 |
31883→1883/tcp |
| 主要用途 |
物联网设备或生产线消息通信 |
| 默认配置 |
无认证(建议配置用户/密码或 TLS) |
8. imes-server(后端 Java 服务)
| 属性 |
值 |
| 容器 ID |
1717558a3ca7 |
| 镜像 |
devops.inspur.com:80/ite/mes/repo/local_repo/imes-docker/imes/imes-server:dev-latest |
| 状态 |
Up 16 h |
| 端口映射 |
9092→9092/tcp(预留 RPC)
38090→8080/tcp(主 API)
38088→8088/tcp(管理或监控) |
| 主要用途 |
MES 核心业务逻辑,提供 REST API |
| 启动命令 |
java -jar /ktg-admin-*.jar(推断) |
| 注意 |
依赖 MySQL、Redis、MinIO、ClickHouse,需确保配置文件中的连接地址指向宿主机对应映射端口 |
9. imes-ui(前端静态服务)
| 属性 |
值 |
| 容器 ID |
6248bfb14212 |
| 镜像 |
devops.inspur.com:80/ite/mes/repo/local_repo/imes-docker/imes/imes-ui:dev-latest |
| 状态 |
Up 20 h |
| 端口映射 |
38080→80/tcp |
| 主要用途 |
提供 Nginx 托管的前端页面 |
| 启动命令 |
/bin/sh -c 'envsubst...'(可能动态替换环境变量) |
| 访问地址 |
http://<宿主机IP>:38080 |
三、端口占用一览表(宿主机视角)
| 宿主机端口 |
容器及服务 |
用途说明 |
| 9090 |
imes-minio-server |
MinIO API |
| 39001 |
imes-minio-server |
MinIO Console |
| 49001 |
imes-minio-slave |
MinIO Console(从) |
| 49090 |
imes-minio-slave |
MinIO API(从) |
| 33106 |
imes-mysql-server-33106 |
MySQL 主库 |
| 33206 |
imes-mysql-slave |
MySQL 从库 |
| 8123 |
imes-clickhouse-server |
ClickHouse HTTP |
| 9000 |
imes-clickhouse-server |
ClickHouse 原生协议 |
| 9009 |
imes-clickhouse-server |
ClickHouse 内部复制 |
| 36379 |
imes-redis-36379 |
Redis |
| 31883 |
imes-mosquitto |
MQTT (1883) |
| 9092 |
imes-server |
RPC 端口 |
| 38090 |
imes-server |
主 API (8080) |
| 38088 |
imes-server |
管理 API (8088) |
| 38080 |
imes-ui |
前端页面 |
四、容器间依赖关系(启动顺序建议)
若需重启整个环境,建议按以下顺序启动容器(依赖底层服务先启动):
- MySQL(主库
imes-mysql-server-33106 → 从库 imes-mysql-slave)
- ClickHouse(imes-clickhouse-server)
- Redis(imes-redis-36379)
- MinIO(先主后从,或同时启动)
- Mosquitto(imes-mosquitto)
- imes-server(后端业务)
- imes-ui(前端界面)
注意:当前所有容器均为 docker run 创建且设置了 --restart 策略(未见输出,但通常未设置),建议补充 --restart=unless-stopped 以保证宿主机重启后自动恢复。
五、常用运维命令
查看所有容器状态
docker ps -a --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
查看单个容器日志(以 imes-server 为例)
docker logs -f --tail 200 imes-server
进入容器内部调试(如 MySQL)
docker exec -it imes-mysql-server-33106 mysql -uroot -p
重启单个容器
docker restart imes-server
停止所有容器(谨慎使用)
docker stop $(docker ps -q)
备份容器配置(生成 docker run 命令)
docker run --rm -v /var/run/docker.sock:/var/run/docker.sock assaflavie/runlike imes-server
六、注意事项与改进建议
当前潜在问题
| 问题 |
风险 |
建议 |
| Redis 无密码 |
内网可能被未授权访问 |
修改启动参数加入 --requirepass <密码>,并更新后端配置 |
| Mosquitto 无认证 |
消息可被任意订阅/发布 |
配置 mosquitto.conf 开启用户密码认证 |
| MinIO 两个节点未配置集群模式 |
仅独立运行,无自动同步 |
若需同步,使用 minio server --address :9090 --console-address :9001 http://node1/data http://node2/data 集群启动 |
| MySQL 从库延迟 |
主从复制可能因网络或负载延迟 |
定期监控 Seconds_Behind_Master |
| 镜像来自私有 Harbor 及华为云仓库 |
外网无法拉取或鉴权失败 |
确保 docker login 已配置,或导出镜像备份 |
| 容器无资源限制 |
可能耗尽宿主机 CPU/内存 |
添加 --cpus、--memory 参数 |
改进建议(生产环境)
- 编排化:使用 Docker Compose 或 Kubernetes 管理容器,便于环境迁移和复制。
- 持久化存储:为数据库和 MinIO 挂载宿主机目录或卷(当前未在
docker ps 中显示,需通过 docker inspect 确认是否使用了 -v)。
- 健康检查:在
docker run 中加入 --health-cmd 自动探测服务可用性。
- 日志轮转:配置 Docker 日志驱动为
json-file 并设置 max-size 和 max-file,避免磁盘占满。
- 网络隔离:创建自定义 Docker 桥接网络,容器间通过容器名通信,减少对外暴露的端口。
七、快速连接字符串(供开发或测试使用)
| 服务 |
连接示例 |
| MySQL 主库 |
mysql -h 宿主机IP -P 33106 -uroot -p |
| MySQL 从库 |
mysql -h 宿主机IP -P 33206 -uroot -p |
| ClickHouse |
clickhouse-client --host 宿主机IP --port 9000 |
| Redis |
redis-cli -h 宿主机IP -p 36379 |
| MinIO API |
endpoint: http://宿主机IP:9090,accessKey/secretKey 需从容器日志或环境变量获取 |
| MinIO Console |
http://宿主机IP:39001(主)或 http://宿主机IP:49001(从) |
| MQTT Broker |
mqtt://宿主机IP:31883 |
| MES API |
http://宿主机IP:38090 |
| MES UI |
http://宿主机IP:38080 |
八、总结
当前 Docker 环境已完整部署 MES 系统所需的全部组件,且各容器运行稳定。建议定期执行 docker stats 监控资源使用,并依据上述“改进建议”逐步提升环境可靠性和安全性。本报告可作为日常运维、故障排查和新人入职的直接参考文档。
文档生成时间:2026-05-25
操作员:inspur(宿主机用户)
环境基线:Docker 引擎版本(未提供,可执行 docker version 查看)