LoongLee's blog

Docker

En

Docker

定义

Docker 是一个开源的容器化平台,允许开发者将应用程序及其依赖打包到标准化的容器中,确保在任何环境中都能一致运行。

核心概念

  • 镜像(Image):只读模板,包含运行应用所需的一切
  • 容器(Container):镜像的运行实例,是独立、隔离的运行环境
  • Dockerfile:定义如何构建镜像的脚本
  • 仓库(Registry):存储和分发镜像的服务(如 Docker Hub)

Dockerfile 示例

# 多阶段构建示例
FROM python:3.11.7-slim as builder
WORKDIR /app
COPY requirements.txt .
RUN pip install --user -r requirements.txt

FROM python:3.11.7-slim
WORKDIR /app
COPY --from=builder /root/.local /root/.local
COPY . .
EXPOSE 8000
CMD ["python", "app.py"]

常用命令

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

# 运行容器
docker run -p 8000:8000 myapp

# 查看运行中的容器
docker ps

# 停止容器
docker stop <container_id>

# 查看日志
docker logs <container_id>

# 进入容器
docker exec -it <container_id> /bin/bash

Docker Compose

用于定义和运行多容器应用:

version: '3.8'
services:
  web:
    build: .
    ports:
      - "8000:8000"
    depends_on:
      - db
  db:
    image: postgres:15
    environment:
      POSTGRES_DB: mydb

优势

  • 环境一致性:开发、测试、生产环境统一
  • 快速部署:秒级启动容器
  • 资源隔离:进程、网络、文件系统隔离
  • 易于扩展:水平扩展简单

生产环境最佳实践

  1. 使用非 root 用户运行容器
  2. 最小化镜像体积(使用 alpine/slim 基础镜像)
  3. 多阶段构建减少最终镜像大小
  4. 不将敏感信息硬编码在镜像中
  5. 定期更新基础镜像

相关技术

  • Kubernetes - 容器编排系统
  • Docker Compose - 多容器编排
  • Gunicorn - WSGI 服务器
  • PostgreSQL - 常用数据库镜像

录入自: Django开发实践笔记