优化 Debian Docker 镜像和容器通常可以从镜像体积、构建速度、运行安全、资源占用几个方面入手。下面按“实用优先级”给你一套常见优化方案。
FROM debian:stable-slim
或进一步使用:
FROM debian:bookworm-slim
slim 版本去除了大量非必要包,体积更小。
❌ 不推荐:
RUN apt-get update
RUN apt-get install -y curl
RUN apt-get clean
✅ 推荐:
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
关键点:
--no-install-recommends:不装推荐包FROM golang:1.22 AS build
WORKDIR /app
COPY . .
RUN go build -o app
FROM debian:bookworm-slim
COPY --from=build /app/app /usr/local/bin/app
CMD ["app"]
FROM debian:bookworm-20240601-slim
避免 apt upgrade 导致不可复现。
docker run -d \
--memory=256m \
--cpus=1 \
--restart=unless-stopped \
my-debian-app
RUN useradd -m appuser
USER appuser
或运行参数:
docker run -u 1000:1000
docker run --read-only --tmpfs /tmp my-app
.git
node_modules
*.log
tests
避免无关文件进入构建上下文。
systemdENV TZ=Asia/Shanghai
RUN apt-get update && apt-get install -y tzdata
FROM debian:bookworm-slim
ENV DEBIAN_FRONTEND=noninteractive
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl ca-certificates \
&& apt-get clean \
&& rm -rf /var/lib/apt/lists/*
WORKDIR /app
COPY app /usr/local/bin/app
USER nobody
CMD ["/usr/local/bin/app"]
如果你能说明:
我可以给你更针对性的优化方案。