企业级 Docker 容器化平台搭建的标准化操作指南,涵盖环境部署、镜像构建、私有仓库、服务编排、监控运维全流程,适用于 Nginx、Tomcat、JumpServer 等应用的容器化迁移,可经过精细化调整后直接用于生产环境落地实施。

一、环境准备

1.硬件要求

2. 依赖检查与安装

# 关闭防火墙(生产环境可配置安全组替代)
systemctl stop firewalld
systemctl disable firewalld

# 关闭 SELinux
setenforce 0
sed -i 's/SELINUX=enforcing/SELINUX=disabled/' /etc/selinux/config

# 安装基础依赖工具
yum install -y curl wget gcc gcc-c++ make pcre pcre-devel openssl-devel

二、Docker 环境部署

1. Docker 安装

# 1. 配置阿里云 Docker YUM 源
curl -o /etc/yum.repos.d/docker-ce.repo https://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

# 2. 安装 Docker CE 稳定版
yum install -y docker-ce

# 3. 启动 Docker 服务并设置开机自启
systemctl start docker
systemctl enable docker

# 4. 验证 Docker 安装成功(显示版本信息即正常)
docker version

2. Docker 核心配置(加速 + 私有仓库信任)

# 1. 创建/修改 Docker 配置文件
cat > /etc/docker/daemon.json << EOF
{
  "registry-mirrors": [
    "https://6kx4zyno.mirror.aliyuncs.com",
    "https://registry.docker-cn.com"
  ],
  "insecure-registries": ["192.168.56.104"],
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "10m",
    "max-file": "3"
  }
}
EOF

# 2. 重启 Docker 使配置生效
systemctl restart docker

# 3. 验证配置(查看镜像源和私有仓库配置)
docker system info | grep -E "Registry Mirrors|Insecure Registries|Mirrors|Insecure" -A 10

三、Harbor 私有仓库搭建

1. 安装前提(Docker Compose 已预装)

# 验证 Docker Compose 安装
docker-compose --version
# 若未安装,执行以下命令
yum install -y docker-compose

2. Harbor 安装与配置

# 1. 下载并解压 Harbor 安装包(离线包更稳定) 如果无法下载离线包暂时用在线包!
wget https://github.com/goharbor/harbor/releases/download/v1.8.0/harbor-offline-installer-v1.8.0.tgz
tar xf harbor-offline-installer-v1.8.0.tgz -C /usr/local/

# 2. 配置 Harbor 核心参数
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
cat > harbor.yml << EOF
hostname: 192.168.56.104
harbor_admin_password: 123456
http:
  port: 80
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor
EOF

# 3. 执行安装脚本
./install.sh

# 4. 验证 Harbor 启动成功(查看容器状态)
docker-compose ps
# 预期输出:harbor-core、harbor-db、harbor-portal 等容器状态为 Up
# 1. 下载并解压 Harbor 安装包(离线包更稳定)
wget https://github.com/goharbor/harbor/releases/download/v1.8.0/harbor-offline-installer-v1.8.0.tgz
tar xf harbor-offline-installer-v1.8.0.tgz -C /usr/local/

# 2. 配置 Harbor 核心参数
cd /usr/local/harbor
cp harbor.yml.tmpl harbor.yml
#修改harbor.yml以下内容:
vim harbor.yml

hostname: 192.168.56.104
harbor_admin_password: 123456
http:
  port: 80
log:
  level: info
  local:
    rotate_count: 50
    rotate_size: 200M
    location: /var/log/harbor

# 3. 执行安装脚本
./install.sh

# 4. 验证 Harbor 启动成功(查看容器状态)
docker-compose ps
# 预期输出:harbor-core、harbor-db、harbor-portal 等容器状态为 Up

注意:测试时可以关闭HTTPS 协议,也可以配置自签证书,我这里为了测试项目,因此没有配置

# https:
#   port: 443
#   certificate: /your/cert/path
#   private_key: /your/key/path

安装完成

3. Harbor 初始化操作(web界面)

  1. 访问地址:http://192.168.30.13
  2. 登录账号:admin/123456
  3. 创建项目:
    • 项目名称:chenyun(自定义,需与后续镜像标签一致)
    • 访问级别:私有(仅授权用户可拉取,安全管控)
  4. 权限配置:创建普通用户并分配项目权限(避免使用 admin 账号直接操作)

创建项目

创建账号

给项目分配管理员

验证:普通用户登录并使用项目

退出登录并且重新进去项目进行验证

4.设置 Harbor 开机自启(通过 systemd 实现)

Docker Compose 本身不支持开机自启,但可以通过系统的 systemd 服务管理工具配置自动启动脚本。

步骤 1:创建 systemd 服务文件

# 创建 Harbor 服务文件
vim /etc/systemd/system/harbor.service
[Unit]
Description=Harbor Docker Registry Service
After=docker.service  # 确保 Docker 服务启动后再启动 Harbor
Requires=docker.service

[Service]
Type=oneshot
ExecStart=/usr/bin/docker-compose -f /usr/local/harbor/docker-compose.yml up -d  # 启动命令
ExecStop=/usr/bin/docker-compose -f /usr/local/harbor/docker-compose.yml down    # 停止命令
RemainAfterExit=yes  # 服务启动后保持运行状态

[Install]
WantedBy=multi-user.target  # 多用户模式下开机自启

步骤 2:启用并启动服务

# 重新加载 systemd 配置
systemctl daemon-reload

# 启用开机自启
systemctl enable harbor.service

# 手动启动一次(验证服务是否正常)
systemctl start harbor.service

步骤 3:验证开机自启配置

# 查看服务状态(确保 Active: active (exited),表示启动成功)
systemctl status harbor.service

# 重启主机后验证(可选,测试实际效果)
reboot

# 重启后查看 Harbor 容器是否自动启动
docker-compose -f /usr/local/harbor/docker-compose.yml ps

四、标准化镜像构建

1. 镜像构建规范

  • 基础镜像选择:优先使用精简镜像(如 centos:6.8 而非完整版)
  • 多阶段构建:分离编译和运行阶段,剔除无用依赖
  • 权限最小化:创建专用运行用户,避免使用 root
  • 标签标准化:格式为 私有仓库地址/项目名/镜像名:版本(如 192.168.30.13/shanwaiyun/nginx:v1)

2. Nginx 镜像构建

(1)准备构建文件

# 创建工作目录
mkdir -p /opt/docker-build/nginx && cd /opt/docker-build/nginx
# 下载 Nginx 源码包
wget http://nginx.org/download/nginx-1.18.0.tar.gz

(2)编写 Dockerfile

# 新建 Dockerfile 文件
cat > Dockerfile << EOF
# 构建阶段
FROM centos:6.8 AS build
RUN rm -f /etc/yum.repos.d/*.repo && \
    echo "[base]" > /etc/yum.repos.d/CentOS-Base.repo && \
    echo "name=CentOS-6 - Base - mirrors.aliyun.com" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "baseurl=https://mirrors.aliyun.com/centos-vault/6.8/os/x86_64/" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "gpgcheck=1" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "[updates]" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "name=CentOS-6 - Updates - mirrors.aliyun.com" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "baseurl=https://mirrors.aliyun.com/centos-vault/6.8/updates/x86_64/" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "gpgcheck=1" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "[extras]" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "name=CentOS-6 - Extras - mirrors.aliyun.com" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "baseurl=https://mirrors.aliyun.com/centos-vault/6.8/extras/x86_64/" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "gpgcheck=1" >> /etc/yum.repos.d/CentOS-Base.repo && \
    echo "gpgkey=https://mirrors.aliyun.com/centos-vault/RPM-GPG-KEY-CentOS-6" >> /etc/yum.repos.d/CentOS-Base.repo && \
    yum clean all && yum makecache  # 清理缓存并生成新源缓存
RUN yum install -y wget gcc gcc-c++ openssl-devel make pcre pcre-devel && \
    useradd -s /sbin/nologin -M nginx

ADD nginx-1.18.0.tar.gz /usr/local/src/
WORKDIR /usr/local/src/nginx-1.18.0
RUN ./configure --prefix=/usr/local/nginx \
                --user=nginx \
                --group=nginx \
                --with-http_ssl_module \
                --with-http_stub_status_module && \
    make && make install && \
    echo "daemon off;" >> /usr/local/nginx/conf/nginx.conf

# 运行阶段
FROM centos:6.8
COPY --from=build /usr/local/nginx /usr/local/nginx
COPY --from=build /etc/passwd /etc/passwd
ENV PATH /usr/local/nginx/sbin:$PATH
EXPOSE 80
CMD ["nginx"]
EOF

(3)构建并推送镜像

# 1. 构建镜像
docker build -t 192.168.30.13/chenyun/nginx:v1 .

# 2. 登录 Harbor 私有仓库
docker login 192.168.30.13 -u admin -p 123456

# 3. 推送镜像到私有仓库
docker push 192.168.30.13/chenyun/nginx:v1

# 4. 验证镜像(从仓库拉取测试)
docker rmi 192.168.30.13/chenyun/nginx:v1
docker pull 192.168.30.13/chenyun/nginx:v1

登录Harbor镜像和推送到私有仓库演示

验证镜像(从仓库拉取测试)

通过web界面可以发现,下载数发生改变

3. Tomcat 镜像构建

(1)准备构建文件

# 1. 准备工作目录和依赖包
mkdir -p /opt/docker-build/tomcat && cd /opt/docker-build/tomcat
# 上传 jdk-8u45-linux-x64.tar.gz 和 apache-tomcat-8.5.56.tar.gz 到该目录  
# 也可以通过wget下载 

(2)编写 Dockerfile

# 2. 编写 Dockerfile
cat > Dockerfile << EOF
FROM centos:6.8
ADD jdk-8u151-linux-i586.tar.gz /usr/local
ADD apache-tomcat-8.5.56.tar.gz  /usr/local/
# 2. 清理压缩包 + 创建用户 + 权限配置
RUN rm -f /usr/local/*.tar.gz && \
    useradd -s /sbin/nologin -M tomcat && \
    chown -R tomcat:tomcat /usr/local/apache-tomcat-8.5.56

ENV JAVA_HOME /usr/local/jdk1.8.0_45
ENV CATALINA_HOME /usr/local/apache-tomcat-8.5.56
ENV PATH $JAVA_HOME/bin:$CATALINA_HOME/bin:$PATH

WORKDIR $CATALINA_HOME
EXPOSE 8080
ENTRYPOINT ["./bin/catalina.sh", "run"]

EOF

(3)构建并推送


# 3. 构建并推送
docker build -t 192.168.30.13/chenyun/tomcat:v1 .
docker push 192.168.30.13/chenyun/tomcat:v1

构建并推送成功

4.从官方拉取 MySQL 5.7 镜像进行推送

docker pull mysql:5.7
# 打标签(匹配 Harbor 项目路径 chenyun)
docker tag mysql:5.7 192.168.30.13/chenyun/mysql:5.7
# 推送到 Harbor
docker push 192.168.30.13/chenyun/mysql:5.7

5.从官方拉取Redis 最新镜像进行推送

docker pull redis:latest
# 打标签
docker tag redis:latest 192.168.30.13/chenyun/redis:latest
# 推送到 Harbor
docker push 192.168.30.13/chenyun/redis:latest

6.从官方拉取拉取 Jumpserver 镜像进行推送

docker pull jumpserver/jms_all:v2.1.2
#给镜像打标签(匹配你原配置的 Harbor 路径)
docker tag jumpserver/jms_all:v2.1.2 192.168.30.13/chenyun/jumpserver/jms_all:v2.1.2
# 推送jumpserver镜像到私有仓库
docker push 192.168.30.13/chenyun/jumpserver/jms_all:v2.1.2

五、Docker Compose 多服务编排部署

重启策略说明(选哪种?)

Docker 提供 4 种重启策略,推荐使用 always 或 unless-stopped

  • --restart=always最常用,无论容器如何退出(正常 / 异常),Docker 服务启动时都会自动启动容器。
  • --restart=unless-stopped:容器退出后,除非手动执行 docker stop 停止,否则 Docker 服务启动时会自动启动(适合需要偶尔手动停止的场景)。
  • --restart=on-failure:仅在容器异常退出(退出码非 0)时自动重启(适合对稳定性要求不高的临时任务)。
  • --restart=no:默认策略,主机重启后不会自动启动(不推荐用于生产环境的监控组件)。

所有docker服务可以添加重启策略,

也可以在后期统一用docker update --restart=always 容器名:

# 示例:创建 mysqld:5.7 时直接配置自动重启
docker run -d \
  --name=mysqld-exporter \
  --restart=always \  # 关键:设置自动重启策略
  -e DATA_SOURCE_NAME="root:你的密码@(192.168.30.13:3306)/" \
  -p 9104:9104 \
  prom/mysqld:5.7

2. JumpServer 堡垒机编排部署

(1)编写 docker-compose.yml

# 创建编排目录
mkdir -p /opt/docker-compose/jumpserver && cd /opt/docker-compose/jumpserver
# 创建数据卷挂载
mkdir -p /opt/jumpserver/data
# 临时777权限,部署完成后需要精细化配置
chmod 777 /opt/jumpserver/data

# 编写编排文件
cat > docker-compose.yml << EOF
version: '3.8'
services:
  mysql:
    image: 192.168.30.13/chenyun/mysql:5.7
    container_name: jumpserver-mysql
    restart: always
    ports:
      - "3306:3306"
    volumes:
      - mysql_data:/var/lib/mysql
    environment:
      - MYSQL_ALLOW_EMPTY_PASSWORD=yes
      - MYSQL_DATABASE=jumpserver
      - MYSQL_USER=jumpserver
      - MYSQL_PASSWORD=123456
    networks:
      - jumpserver-net

  redis:
    image: 192.168.30.13/chenyun/redis:latest
    container_name: jumpserver-redis
    restart: always
    ports:
      - "6379:6379"
    environment:
      - REDIS_PASSWORD=123456
    command: redis-server --requirepass 123456
    networks:
      - jumpserver-net

  jms_all:
    image: 192.168.30.13/chenyun/jumpserver/jms_all:v2.10.0
    container_name: jumpserver-core
    restart: always
    ports:
      - "8080:80"
      - "2222:2222"
    volumes:
      - /opt/jumpserver/data:/opt/jumpserver/data
    environment:
      - SECRET_KEY=8!t550ob(mh3ab^!wwritk33&gn*^u8h
      - BOOTSTRAP_TOKEN=nOK2IOJKaogjocaq
      - DB_HOST=mysql
      - DB_PORT=3306
      - DB_USER=jumpserver
      - DB_PASSWORD=123456
      - DB_NAME=jumpserver
      - REDIS_HOST=redis
      - REDIS_PORT=6379
      - REDIS_PASSWORD=123456
    depends_on:
      - mysql
      - redis
    networks:
      - jumpserver-net

volumes:
  mysql_data:

networks:
  jumpserver-net:
    driver: bridge
EOF

(2)一键部署与验证

# 1. 启动所有服务(后台运行)
docker-compose up -d

# 2. 查看服务启动状态
docker-compose ps

# 3. 查看日志(排查启动故障)
docker-compose logs -f jms_all

# 4. 访问验证
# 访问地址:http://192.168.30.13:8080
# 登录账号:admin/admin(首次登录需修改密码)

访问web堡垒机

修改密码

重新登录

六、监控运维体系搭建

1. 监控架构说明

  • 数据采集:cAdvisor(容器指标)+ Node Exporter(宿主机指标)
  • 数据存储:Prometheus(时序数据存储)
  • 可视化:Grafana(图表展示 + 告警)
  • 告警方式:支持邮件、钉钉、短信等(需额外配置:该项目后续再配置)

2. 组件部署步骤

(1)部署 cAdvisor(容器指标采集)

docker run -d \
  --name=cadvisor \
  --privileged=true \
  --volume=/:/rootfs:ro \
  --volume=/var/run:/var/run:ro \
  --volume=/sys:/sys:ro \
  --volume=/var/lib/docker/:/var/lib/docker:ro \
  --volume=/dev/disk/:/dev/disk:ro \
  --publish=8082:8080 \
  google/cadvisor:latest

# 宿主机端口 8082 映射到容器内 8080 端  ,因为堡垒机已经使用了8080端口
# 验证:访问 http://192.168.30.13:8082/metrics 能看到指标数据即正常

(2)部署 Node Exporter(宿主机指标采集)

docker run -d \
  --name=node-exporter \
  --net="host" \
  --pid="host" \
  --volume="/proc:/host/proc:ro" \
  --volume="/sys:/host/sys:ro" \
  --volume="/:/rootfs:ro" \
  --publish=9100:9100 \
  prom/node-exporter \
  --path.procfs=/host/proc \
  --path.sysfs=/host/sys \
  --collector.filesystem.ignored-mount-points="^/(sys|proc|dev|host|etc)($|/)"

# 验证:访问 http://192.168.30.13:9100/metrics 能看到宿主机指标即正常

(3)部署 Prometheus(指标存储)

# 1. 创建配置文件目录
mkdir -p /opt/prometheus && cd /opt/prometheus

# 2. 编写配置文件
cat > prometheus.yml << EOF
global:
  scrape_interval: 10s
  evaluation_interval: 10s

scrape_configs:
  - job_name: 'prometheus'
    static_configs:
      - targets: ['192.168.30.13:9090']
        labels:
          instance: 'prometheus-server'

  - job_name: 'docker-containers'
    static_configs:
      - targets: ['192.168.30.13:8082']
        labels:
          instance: 'docker-node-1'

  - job_name: 'host-resources'
    static_configs:
      - targets: ['192.168.30.13:9100']
        labels:
          instance: 'docker-node-1'
EOF
# job_name解释一下:
# job_name: 'prometheus' 采集 Prometheus 自身的运行指标(监控监控系统本身)
# job_name: 'docker-containers' 采集 Docker 容器的运行指标(如容器的 CPU、内存、网络 IO 等)。
# job_name: 'host-resources' 采集宿主机(物理机 / 虚拟机)的硬件和系统资源指标。

# 3. 启动 Prometheus
docker run -d \
  --name=prometheus \
  --publish=9090:9090 \
  --volume=/opt/prometheus/prometheus.yml:/etc/prometheus/prometheus.yml \
  prom/prometheus

# 验证:访问 http://192.168.30.13:9090 ,进入 Status -> Targets ,所有目标状态为 UP 即正常

访问 http://192.168.30.13:9090 ,进入 Status -> Targets ,所有目标状态为 UP 即正常

(4)部署 Grafana(可视化 + 告警)

# 创建宿主机挂载目录 /opt/grafana/data
mkdir -p /opt/grafana/data

# 将目录所有者改为容器内的 grafana 用户(UID 472)
chown -R 472:472 /opt/grafana/data

# 验证权限(一般不需要)
ls -ld /opt/grafana/data
# 1.启动 Grafana
docker run -d \
  --name=grafana \
  --publish=3000:3000 \
  --volume=/opt/grafana/data:/var/lib/grafana \
  --restart=always \
  grafana/grafana

 2. 初始化配置(界面操作)
访问地址:http://192.168.30.13:3000
登录账号:admin/admin(首次登录需修改密码)

3. 添加 Prometheus 数据源
步骤:Configuration -> Data Sources -> Add data source -> 选择 Prometheus
配置:
- Name: Prometheus

- URL: http://192.168.30.13:9090
- Access: Server
点击 Save & Test ,显示 Data source is working 即成功

在这里面可以设置很多参数,本项目是容器化部署项目,因此许多服务没有进行精细化管理与配置!

4. 导入监控模板
宿主机监控模板:导入 ID 8919(Node Exporter 中文模板)
Docker 容器监控模板:导入 ID 12781(Docker 全方位监控)

导入模板步骤(以宿主机模板 8919 为例):

  1. 进入导入页面点击页面中间的 + Create dashboard 按钮(或左侧菜单 Dashboards → New → Import)。

  2. 输入模板 ID在弹出的 “Import” 页面中,找到 “Import via grafana.com 输入框,输入宿主机模板 ID 8919,然后点击 Load(Grafana 会自动从官方模板库拉取该模板)。

  3. 配置模板关联的数据源加载完成后,页面会显示模板详情,在 “Prometheus” 下拉框中,选择你之前添加的 Prometheus 数据源(默认名称可能是 “Prometheus”)。

  4. 完成导入点击页面底部的 Import 按钮,稍等片刻,模板会自动生成包含宿主机监控指标(CPU、内存、磁盘、网络等)的仪表板。

(1)宿主机监控模板:导入 ID 8919(Node Exporter 中文模板)

(2)Docker 容器监控模板:导入 ID 12781(Docker 全方位监控)

5. 配置告警规则(这里是示例,步骤我就不做了,但是在生产环境必须配置!!!
步骤:Alerting -> Alert rules -> Create alert rule
规则1:CPU 使用率 > 80%(持续 1 分钟)
规则2:内存使用率 > 90%(持续 1 分钟)
规则3:磁盘可用空间 < 10%(持续 5 分钟)
配置告警渠道:Alerting -> Notification channels(支持邮件、钉钉等)

七、日常运维与故障应急

1. 常用运维命令

操作目的 命令
查看运行中容器 docker ps
查看所有容器 docker ps -a
查看容器日志 docker logs -f 容器 ID / 名称
查看容器资源占用 docker stats
启动 / 停止 / 重启容器 docker start/stop/restart 容器 ID / 名称
构建镜像 docker build -t 镜像名:版本 .
推送镜像 docker push 镜像名:版本
拉取镜像 docker pull 镜像名:版本
清理未使用镜像 docker image prune -a -f
清理停止的容器 docker container prune -f
查看数据卷 docker volume ls
查看网络 docker network ls

2. 故障应急流程

(1)容器无法启动

  1. 执行 docker logs -f 容器ID 查看日志,定位错误原因
  2. 常见问题及解决:
    • 端口占用:更换端口或停止占用端口的服务
    • 依赖服务未启动:检查 depends_on 配置,确保依赖服务正常运行
    • 数据卷权限:执行 chmod 777 -R 宿主机目录 临时授权(生产环境需精细化配置)

(2)服务访问异常

  1. 检查容器状态:docker ps 确认容器是否运行
  2. 检查端口映射:docker port 容器ID 确认端口映射正确
  3. 检查网络连通性:docker exec -it 容器ID ping 目标IP
  4. 检查应用日志:进入容器查看应用日志(如 Nginx 日志:/usr/local/nginx/logs/error.log)

(3)数据丢失应急

  1. 利用数据卷备份恢复:docker run --rm -v 目标数据卷:/target -v /backup:/backup alpine tar -xzf /backup/备份文件名.tar.gz -C /target
  2. 利用镜像备份恢复:docker load -i 镜像备份.tar

(4)资源瓶颈处理

  1. 通过 Grafana 监控面板识别瓶颈(CPU / 内存 / 磁盘)
  2. 临时处理:重启相关服务 docker-compose restart 服务名
  3. 长期处理:扩容宿主机资源或优化应用配置

八、安全加固建议

  1. 镜像安全:
    • 仅从信任的仓库拉取镜像,避免使用未知镜像
    • 镜像构建完成后扫描漏洞(使用 Trivy 工具:trivy image 镜像名:版本
  2. 容器安全:
    • 禁止容器使用 root 用户运行,创建专用运行用户
    • 限制容器资源配额(在 docker-compose 中配置 deploy.resources
    • 禁用容器特权模式(避免 --privileged=true
  3. 仓库安全:
    • Harbor 启用 HTTPS(生产环境必须配置)
    • 定期更换 Harbor 管理员密码,分配最小权限
  4. 数据安全:
    • 定期备份数据卷和镜像,备份文件异地存储
    • 敏感配置(如密码)通过环境变量或配置文件挂载,避免硬编码

九、项目验收标准(参考)

  1. 功能验收:
    • Harbor 私有仓库可正常上传 / 下载镜像
    • 所有应用(Nginx/Tomcat/JumpServer)可通过 Docker Compose 一键部署
    • 监控系统可实时展示容器和宿主机指标,告警功能正常
  2. 性能验收:
    • 镜像构建时间≤8 分钟(相比优化前 30 分钟缩短 73%)
    • 镜像体积较优化前缩减 40% 以上
    • 应用部署效率提升 80%(相比传统部署方式)
  3. 运维验收:
    • 容器异常响应时间≤5 分钟
    • 故障自动恢复(容器重启后数据不丢失)
    • 运维人力成本降低 50%(相比传统运维方式)

更多推荐