对于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 集成建议。是否需要?

相关推荐
进击的荆棘6 分钟前
Linux系统——线程概念与控制之线程封装
linux·运维·服务器·线程
一个天蝎座 白勺 程序猿9 小时前
KingbaseES数据库归档重做日志文件管理:从配置到运维的实战指南
运维·数据库·oracle·kingbasees·金仓数据库
分布式存储与RustFS13 小时前
镜像仓库的层别堆本地盘:用 RustFS 给 Docker Registry 当 S3 后端
运维·云原生·开源·对象存储·分布式存储·s3·性能基准
陈希12313 小时前
Linux 防火墙配置实战:firewalld、iptables 与云安全组
linux·运维·服务器
@兽血沸腾15 小时前
Windows系统安装Jenkins部署应用至远程Windows服务器操作指南
运维·服务器·jenkins
闲云自留地20 小时前
K8s 的记忆大脑!ETCD 集群部署、etcdctl 命令与备份恢复全通关
容器·kubernetes·etcd
讯捷蓝达20 小时前
戴尔R720xd服务器卡死在 “Configuring Memory...Done“,换了内存还是卡?问题根本不在内存
运维·服务器
爱和冰阔落1 天前
【Linux网络】TCP 服务器如何并发处理多个客户端?从 fork、僵尸进程到双重 fork
linux·运维·服务器·网络
lisanmengmeng1 天前
alertmanger 标签 rules 打上分组标签
linux·运维·服务器
Android系统攻城狮1 天前
Linux FFmpeg深度解析之av_write_frame调用流程与实战(三十三)
linux·运维·服务器·ffmpeg·音视频进阶·ffmpeg音视频