对于docker在项目中的完整实战

docker:

1.在linux中下载安装docker,配置镜像源。

2.在软件启动阶段,要对docker这个容器做的事情

3.在项目运行阶段,要对docker做的事情

4.在项目保留阶段,要对docker做的事情

以下是围绕 Docker 在 Linux 环境中从安装到项目全生命周期(启动、运行、保留)的关键操作说明,适用于后端开发和运维场景:


1. 在 Linux 中下载安装 Docker,并配置镜像源

安装步骤(以 Ubuntu/CentOS 为例)

Ubuntu(推荐使用官方脚本或 apt):
bash 复制代码
# 卸载旧版本(如有)
sudo apt remove docker docker-engine docker.io containerd runc

# 安装依赖
sudo apt update
sudo apt install -y ca-certificates curl gnupg lsb-release

# 添加 Docker 官方 GPG 密钥
sudo mkdir -p /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg

# 设置仓库
echo \
  "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu \
  $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

# 安装 Docker Engine
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-compose-plugin
CentOS(使用 yum 或 dnf):
bash 复制代码
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install -y docker-ce docker-ce-cli containerd.io

配置镜像加速器(以阿里云为例)

编辑或创建 /etc/docker/daemon.json

json 复制代码
{
  "registry-mirrors": [
    "https://<your-mirror-id>.mirror.aliyuncs.com"
  ]
}

注:需在阿里云容器镜像服务控制台获取专属加速地址。

然后重启 Docker:

bash 复制代码
sudo systemctl daemon-reload
sudo systemctl restart docker

验证安装

bash 复制代码
docker --version
docker run hello-world

2. 软件启动阶段(开发/部署初期)对 Docker 的操作

此阶段目标:构建镜像、启动容器、验证服务可用性

关键操作:

  • 编写 Dockerfile

    定义运行环境、依赖、启动命令等。

    Dockerfile 复制代码
    FROM openjdk:17-jdk-slim
    COPY target/app.jar /app.jar
    CMD ["java", "-jar", "/app.jar"]
  • 构建镜像

    bash 复制代码
    docker build -t myapp:1.0 .
  • 运行容器(开发/测试)

    bash 复制代码
    docker run -d \
      --name myapp-container \
      -p 8080:8080 \
      -v /host/logs:/app/logs \
      myapp:1.0
  • 查看启动日志,确认服务就绪

    bash 复制代码
    docker logs -f myapp-container

此阶段重点:容器能正常启动,接口可访问,配置正确(如端口、环境变量、挂载卷)


3. 项目运行阶段(上线后)对 Docker 的操作

此阶段目标:保障服务稳定、监控、扩缩容、日志采集等

关键操作:

  • 使用 docker-compose 或 Kubernetes 管理多服务

    yaml 复制代码
    # docker-compose.yml 示例
    version: '3'
    services:
      app:
        image: myapp:1.0
        ports:
          - "8080:8080"
        environment:
          - SPRING_PROFILES_ACTIVE=prod
        volumes:
          - ./logs:/app/logs
  • 监控容器状态

    bash 复制代码
    docker stats           # 实时资源使用
    docker ps              # 查看运行容器
  • 日志收集

    bash 复制代码
    docker logs --tail 100 myapp-container
    # 或配置日志驱动(如 syslog、fluentd)
  • 健康检查(Dockerfile 或 compose 中配置)

    Dockerfile 复制代码
    HEALTHCHECK --interval=30s --timeout=3s \
      CMD curl -f http://localhost:8080/actuator/health || exit 1
  • 自动重启策略

    bash 复制代码
    docker run --restart=always ...

此阶段重点:高可用、可观测性、弹性伸缩、故障自愈


4. 项目保留阶段(下线/归档/维护)对 Docker 的操作

此阶段目标:保留历史版本、清理资源、备份数据、便于回滚或审计

关键操作:

  • 保留镜像(打标签归档)

    bash 复制代码
    docker tag myapp:1.0 myapp:1.0-20251229-archive
    docker save myapp:1.0-20251229-archive > myapp-1.0.tar
  • 备份挂载卷数据

    bash 复制代码
    tar -czf app-logs-backup.tar.gz /host/logs
  • 清理无用资源(谨慎操作)

    bash 复制代码
    docker stop myapp-container
    docker rm myapp-container
    docker rmi myapp:1.0
    docker system prune -a   # 删除所有未使用的镜像、容器、网络等
  • 镜像推送到私有仓库(如 Harbor)长期保存

    bash 复制代码
    docker tag myapp:1.0 harbor.example.com/project/myapp:1.0
    docker push harbor.example.com/project/myapp:1.0

此阶段重点:可追溯、可回滚、资源回收、安全归档


总结(全生命周期视角)

阶段 核心目标 关键 Docker 操作
安装配置 搭建运行环境 安装 + 镜像加速
启动阶段 构建并验证服务 Dockerfile → build → run → logs
运行阶段 稳定运行 + 监控 compose / k8s、健康检查、日志、重启策略
保留阶段 归档 + 清理 save/tag/push 镜像、备份卷、prune 资源

如你使用 Spring Boot + MySQL + Redis 等典型 B 端架构,可进一步提供 docker-compose.yml 模板或 CI/CD 集成建议。是否需要?

相关推荐
庸子2 小时前
告别手动运维:Kustomize 与 ArgoCD 构建的 GitOps 体系
运维·kubernetes·argocd
TPBoreas2 小时前
清理服务器日志空间
linux·运维·服务器
北方的流星3 小时前
华为帧中继配置
运维·网络·华为
踏浪无痕3 小时前
从 node-exporter 学如何写出可复用的监控指标
运维·后端·架构
❀͜͡傀儡师3 小时前
Docker快速部署一个轻量级邮件发送 API 服务
jvm·docker·容器
飞Link3 小时前
【CentOS】Linux(CentOS7)安装教程
linux·运维·服务器·centos
lifewange3 小时前
100 个接口,1000 个业务场景,如何设计自动化测试用例?框架是如何设计的?
运维·自动化·测试用例
牛奔3 小时前
Linux 的日志分析命令
linux·运维·服务器·python·excel
深耕AI3 小时前
Docker Volumes详解
运维·docker·容器