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
优势
- 环境一致性:开发、测试、生产环境统一
- 快速部署:秒级启动容器
- 资源隔离:进程、网络、文件系统隔离
- 易于扩展:水平扩展简单
生产环境最佳实践
- 使用非 root 用户运行容器
- 最小化镜像体积(使用 alpine/slim 基础镜像)
- 多阶段构建减少最终镜像大小
- 不将敏感信息硬编码在镜像中
- 定期更新基础镜像
相关技术
- Kubernetes - 容器编排系统
- Docker Compose - 多容器编排
- Gunicorn - WSGI 服务器
- PostgreSQL - 常用数据库镜像
录入自: Django开发实践笔记