Docker 容器化部署完整指南
📅 2026-02-26 | ⏱️ 12分钟 | 👁 156 次阅读 | 💬 8 条评论
前言
Docker 已经成为现代应用部署的标准。本文从零开始,介绍如何使用 Docker 容器化部署应用,包含实战案例和最佳实践。
一、Docker 基础概念
1. 什么是容器?
容器是一种轻量级的虚拟化技术,它将应用及其依赖打包在一起,确保在任何环境中都能一致运行。
2. Docker vs 虚拟机
• 容器共享宿主机内核,启动速度快(秒级)
• 虚拟机需要完整操作系统,资源占用大
• 容器更轻量,同样配置可以运行更多实例
二、安装 Docker
Ubuntu/Debian 系统
# 卸载旧版本
sudo apt remove docker docker-engine docker.io containerd runc
# 安装依赖
sudo apt update
sudo apt install ca-certificates curl gnupg lsb-release
# 添加官方 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
# 添加 Docker 仓库
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
sudo apt update
sudo apt install docker-ce docker-ce-cli containerd.io docker-compose-plugin
# 验证安装
docker --version
sudo docker run hello-world
配置非 root 用户
sudo usermod -aG docker $USER
newgrp docker
三、创建第一个 Dockerfile
以 Node.js 应用为例:
FROM node:18-alpine
WORKDIR /app
COPY package*.json ./
RUN npm ci --only=production
COPY . .
EXPOSE 3000
USER node
CMD ["node", "server.js"]
构建镜像
docker build -t myapp:1.0 .
docker images
四、运行容器
# 基础运行
docker run -d -p 3000:3000 --name myapp myapp:1.0
# 带环境变量
docker run -d -p 3000:3000 -e NODE_ENV=production -e DB_HOST=localhost --name myapp myapp:1.0
# 挂载卷
docker run -d -p 3000:3000 -v /data:/app/data --name myapp myapp:1.0
五、Docker Compose 多容器编排
创建 docker-compose.yml:
version: '3.8'
services:
web:
build: .
ports:
- "3000:3000"
environment:
- NODE_ENV=production
- DB_HOST=db
depends_on:
- db
restart: unless-stopped
db:
image: postgres:15-alpine
environment:
- POSTGRES_PASSWORD=secret
- POSTGRES_DB=myapp
volumes:
- pgdata:/var/lib/postgresql/data
restart: unless-stopped
redis:
image: redis:7-alpine
restart: unless-stopped
volumes:
pgdata:
启动服务
docker compose up -d
docker compose ps
docker compose logs -f web
六、最佳实践
1. 使用 .dockerignore
node_modules
npm-debug.log
.git
.env
*.md
2. 多阶段构建
FROM node:18 AS builder
WORKDIR /app
COPY package*.json ./
RUN npm ci
COPY . .
RUN npm run build
FROM node:18-alpine
WORKDIR /app
COPY --from=builder /app/dist ./dist
COPY package*.json ./
RUN npm ci --only=production
CMD ["node", "dist/server.js"]
3. 健康检查
HEALTHCHECK --interval=30s --timeout=3s CMD curl -f http://localhost:3000/health || exit 1
七、常用命令速查
# 查看容器
docker ps
docker ps -a
# 查看日志
docker logs myapp
docker logs -f myapp --tail 100
# 进入容器
docker exec -it myapp sh
# 停止/删除
docker stop myapp
docker rm myapp
# 清理资源
docker system prune -a
八、生产环境注意事项
• 使用具体版本标签,避免使用 latest
• 限制容器资源(CPU、内存)
• 配置日志驱动和日志轮转
• 使用 secrets 管理敏感信息
• 实施容器安全扫描
总结
Docker 极大简化了应用部署流程。掌握 Dockerfile 编写、镜像构建和容器管理是现代开发者的必备技能。建议从简单应用开始实践,逐步深入学习编排和生产部署。
💬 评论 (8)
发表评论