创建 Docker 镜像是容器化应用的核心步骤,以下是详细指南和最佳实践:
Dockerfile
(推荐方式)# 示例:构建Nginx镜像
FROM ubuntu:22.04
# 元数据
LABEL maintainer="your-email@example.com"
# 安装依赖
RUN apt-get update && apt-get install -y nginx
# 复制本地文件到镜像
COPY index.html /var/www/html/
# 暴露端口
EXPOSE 80
# 启动命令
CMD ["nginx", "-g", "daemon off;"]
构建命令:
docker build -t my-nginx:latest .
docker run -it ubuntu:22.04 bash
# 在容器内修改后
docker commit <container-id> my-custom-image
# 第一阶段:构建环境
FROM golang:1.19 AS builder
WORKDIR /app
COPY . .
RUN go build -o myapp .
# 第二阶段:运行时环境
FROM alpine:latest
COPY --from=builder /app/myapp .
CMD ["./myapp"]
- 将高频变更的操作(如COPY
)放在Dockerfile
底部
- 合并RUN
命令减少层数:
dockerfile
RUN apt-get update && apt-get install -y \
git \
curl \
&& rm -rf /var/lib/apt/lists/*
DOCKER_BUILDKIT=1 docker build --ssh default --no-cache .
docker buildx build --platform linux/arm64,linux/amd64 -t my-image:multiarch .
RUN groupadd -r appuser && useradd -r -g appuser appuser
USER appuser
docker scan my-image:latest
docker trust sign my-image:latest
docker history my-image:latest
docker run -it --rm my-image:latest sh
docker save my-image > my-image.tar
docker load < my-image.tar
--no-cache
参数Dockerfile
中正确设置chown
--network host
或自定义DNS通过以上方法,您可以高效创建安全、轻量的Docker镜像。建议始终使用Dockerfile
实现可重复构建,并结合CI/CD管道自动化流程。