Docker 镜像与容器

Dockerfile 详解

Dockerfile 是构建镜像的自动化脚本:

# 基础镜像
FROM ubuntu:22.04

# 维护者信息
LABEL maintainer="bookstack@example.com"

# 安装依赖
RUN apt-get update && apt-get install -y 
    python3 
    python3-pip 
    && rm -rf /var/lib/apt/lists/*

# 设置工作目录
WORKDIR /app

# 复制文件
COPY requirements.txt .
COPY app.py .

# 安装 Python 依赖
RUN pip3 install -r requirements.txt

# 暴露端口
EXPOSE 8080

# 启动命令
CMD ["python3", "app.py"]

构建优化

分层缓存

# 推荐:依赖层独立缓存
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .

多阶段构建

# 构建阶段
FROM golang:1.22 AS builder
WORKDIR /app
COPY go.mod go.sum ./
RUN go mod download
COPY . .
RUN CGO_ENABLED=0 go build -o app .

# 运行阶段
FROM alpine:latest
RUN apk add --no-cache ca-certificates
COPY --from=builder /app/app /app
CMD ["/app"]

数据管理

# 创建数据卷
docker volume create mydata

# 使用卷
docker run -v mydata:/data nginx

# 绑定挂载
docker run -v /host/path:/container/path nginx

网络模式

# 默认 bridge
docker run --network bridge nginx

# host 模式
docker run --network host nginx

# 自定义网络
docker network create mynet
docker run --network mynet nginx