资源栈 - www.zyz88.com

Docker容器化部署实战:从开发环境到生产环境的完整指南

admin
2026-09-09 3 阅读 0 评论 0 点赞

“一次构建,到处运行”——Docker用这句口号改变了软件部署的方式。从开发环境的一致性到生产环境的弹性扩缩容,容器化已经成为现代应用部署的标准。但Docker的学习曲线也让不少人望而却步。本文用最通俗的语言,带你从Docker基础概念一路走到生产环境部署。

Docker入门基础

Docker是目前最流行的容器化技术,它将应用及其依赖打包到一个可移植的容器中,实现”一次构建,到处运行”。相比传统虚拟机,Docker容器启动更快、资源占用更少、部署更简单。

安装Docker

curl -fsSL https://get.docker.com | bash
systemctl enable --now docker
docker --version

核心概念

  • 镜像(Image)——应用的只读模板,包含运行应用所需的一切
  • 容器(Container)——镜像的运行实例,可以启动、停止、删除
  • Dockerfile——构建镜像的脚本文件
  • 数据卷(Volume)——容器数据持久化存储
  • 网络(Network)——容器间通信的虚拟网络

Dockerfile编写

以一个Node.js应用为例,编写Dockerfile:

FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm install --production
COPY . .
EXPOSE 3000
CMD ["node", "server.js"]

优化技巧:

  • 使用alpine基础镜像减小体积
  • 先复制依赖文件再复制源码,利用构建缓存
  • 多阶段构建,最终镜像只包含运行时文件

常用容器操作

# 构建镜像
docker build -t myapp:1.0 .

# 运行容器
docker run -d --name myapp -p 3000:3000 -v /data:/app/data myapp:1.0

# 查看容器
docker ps
docker logs -f myapp

# 进入容器
docker exec -it myapp sh

# 停止和删除
docker stop myapp
docker rm myapp

Docker Compose编排

对于多容器应用(如Web+数据库+Redis),使用docker-compose.yml统一管理:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
      - redis
    environment:
      - DB_HOST=db
      - REDIS_HOST=redis
  db:
    image: mysql:8.0
    volumes:
      - db_data:/var/lib/mysql
    environment:
      MYSQL_ROOT_PASSWORD: secret
  redis:
    image: redis:7-alpine
volumes:
  db_data:

一键启动所有服务:

docker-compose up -d
docker-compose logs -f
docker-compose down

生产环境部署

镜像管理

  • 使用私有镜像仓库(Harbor或云厂商ACR)存储镜像
  • 镜像标签使用版本号而非latest,确保可回滚
  • 定期扫描镜像漏洞(用Trivy、Clair等工具)

容器安全

  • 容器以非root用户运行
  • 设置资源限制(CPU、内存)防止单个容器耗尽资源
  • 使用只读文件系统,需要写入的目录挂载数据卷
  • 禁用容器的特权模式
docker run -d --name myapp 
  --cpu-shares 512 --memory 512m 
  --read-only --tmpfs /tmp 
  --user 1000:1000 
  myapp:1.0

日志管理

配置Docker日志驱动,限制日志文件大小:

# /etc/docker/daemon.json
{
  "log-driver": "json-file",
  "log-opts": {
    "max-size": "100m",
    "max-file": "3"
  }
}

容器编排进阶

当应用规模扩大到多台服务器时,需要使用容器编排平台:

平台 适用场景 复杂度
Docker Compose 单机多容器
Docker Swarm 多机简单集群
Kubernetes 大规模生产环境

对于大多数中小团队,Docker Compose已经足够。当需要自动扩缩容、滚动更新、服务发现等高级功能时,再考虑迁移到Kubernetes。

常见问题排查

  • 容器启动后立即退出——检查CMD/ENTRYPOINT是否正确,用docker logs查看错误
  • 容器间无法通信——确保容器在同一个网络中,使用服务名而非IP访问
  • 数据丢失——确认重要数据已挂载到数据卷,容器删除不影响数据
  • 端口冲突——检查宿主机端口是否被占用,用docker ps查看端口映射

Docker容器化已经成为现代应用部署的标准方式。掌握Docker基础和Docker Compose编排,就能应对绝大多数部署场景。

文章标题 Docker容器化部署实战:从开发环境到生产环境的完整指南
本文由 资源栈 原创发布,转载请注明出处并保留原文链接。