San*_*pan 6 containers linux-kernel docker dockerfile docker-container
我们可以构建一个在该容器中没有任何 shell 的 docker 容器吗?是否可以创建没有外壳的容器?
是的,您可以从头开始创建一个容器,它甚至不包含任何 bash,它只包含您在构建期间复制的二进制文件,否则它将是空的。
FROM scratch
COPY hello /
CMD ["/hello"]
Run Code Online (Sandbox Code Playgroud)
您可以使用 Docker 的保留、最小映像、scratch 作为构建容器的起点。使用临时“镜像”向构建过程发出信号,表明您希望 Dockerfile 中的下一个命令成为镜像中的第一个文件系统层。
虽然 Scratch 出现在集线器上的 Docker 存储库中,但您无法拉取、运行它或使用名称 scratch 标记任何映像。相反,您可以在 Dockerfile 中引用它。例如,要使用 scratch 创建一个最小容器:
使用它作为基本图像,您可以创建自定义图像,例如您只有节点运行时而不是其他东西,然后您尝试形成scratch-node。
FROM node as builder
WORKDIR /app
COPY package.json package-lock.json index.js ./
RUN npm install --prod
FROM astefanutti/scratch-node
COPY --from=builder /app /
ENTRYPOINT ["node", "index.js"]
Run Code Online (Sandbox Code Playgroud)