Docker 容器化部署完整教程

李增苗 2025-11-28 约 10 分钟
Docker 容器化部署

Docker 已经成为现代软件开发和部署的标配工具。它通过容器化技术,让应用的构建、分发和运行变得标准化和可重复。本文将从零开始,带你掌握 Docker 的核心概念和实战技巧。

什么是 Docker

Docker 是一个开源的容器化平台,它让开发者可以将应用及其依赖打包到一个轻量级、可移植的容器中。容器与虚拟机不同,它共享宿主机的内核,因此启动速度快、资源占用少。

"Build once, run anywhere" — 一次构建,随处运行。这是 Docker 的核心理念。

安装 Docker

在 macOS 和 Windows 上,推荐使用 Docker Desktop。Linux 用户可以通过包管理器安装:

# Ubuntu/Debian
sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io

# 验证安装
docker --version
docker run hello-world

编写 Dockerfile

Dockerfile 是构建 Docker 镜像的蓝图。以下是一个 Node.js 应用的 Dockerfile 示例:

# 使用官方 Node.js 镜像作为基础
FROM node:18-alpine

# 设置工作目录
WORKDIR /app

# 复制依赖文件并安装
COPY package*.json ./
RUN npm ci --only=production

# 复制应用代码
COPY . .

# 暴露端口
EXPOSE 3000

# 启动应用
CMD ["node", "server.js"]

Docker Compose

当你的应用由多个服务组成时(如 Web 服务 + 数据库 + 缓存),Docker Compose 可以帮你统一编排:

# docker-compose.yml
version: '3.8'
services:
  web:
    build: .
    ports:
      - "3000:3000"
    depends_on:
      - db
      - redis
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: myapp
      POSTGRES_PASSWORD: secret
    volumes:
      - pgdata:/var/lib/postgresql/data
  redis:
    image: redis:7-alpine

volumes:
  pgdata:

常用命令

  • docker build -t myapp . — 构建镜像
  • docker run -p 3000:3000 myapp — 运行容器
  • docker-compose up -d — 启动所有服务
  • docker-compose down — 停止并移除所有容器
  • docker logs -f container_name — 查看实时日志

最佳实践

  • 使用多阶段构建(multi-stage build)减小镜像体积
  • 使用 .dockerignore 排除不必要的文件
  • 尽量使用 alpine 基础镜像
  • 不要在镜像中存储敏感信息,使用环境变量或 secrets
  • 合理利用构建缓存,将不常变化的层放在前面

总结

Docker 容器化是现代开发者的必备技能。从本地开发到生产部署,Docker 提供了一致、可靠的运行环境。掌握了本文的内容,你已经具备了在实际项目中使用 Docker 的基础能力。