优化 Debian 环境下的 Docker,可以从镜像体积、构建效率、运行时性能、安全性和可维护性几个维度来做。下面按“由浅入深”的方式给你一套实用清单。
debian:stable-slim(比 debian 小很多)alpine(注意 glibc 差异)FROM debian:bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends curl \
&& rm -rf /var/lib/apt/lists/*
关键点:
--no-install-recommends/var/lib/apt/lists/*多层 RUN 会增加镜像大小:
RUN apt-get update \
&& apt-get install -y xxx \
&& cleanup
顺序很重要:
COPY package.json .
RUN npm install
COPY . .
而不是:
COPY . .
RUN npm install
避免把无关文件打进构建上下文:
.git
node_modules
*.log
FROM debian:slim AS build
RUN build something
FROM debian:slim
COPY --from=build /app /app
可显著减小最终镜像。
docker run -m 512m --cpus=1 myimage
Debian 默认无 init,推荐:
tiniENTRYPOINT ["/usr/bin/tini", "--"]
systemdRUN useradd -m appuser
USER appuser
docker pull debian:bookworm-slim
docker scantrivy image myimageDebian slim 已很干净,但仍可:
systemdbash(用 sh)dash 而非 bash更小、更快:
RUN rm /bin/sh && ln -s /bin/dash /bin/sh
FROM debian:bookworm-slim
RUN apt-get update \
&& apt-get install -y --no-install-recommends tini curl \
&& rm -rf /var/lib/apt/lists/*
RUN useradd -m app
USER app
ENTRYPOINT ["/usr/bin/tini", "--"]
CMD ["myapp"]
如果你能告诉我:
我可以给你更针对性的优化方案。