我不希望在Docker容器中以root用户身份运行任何内容。 我希望镜像尽可能简单。
我可以在scratch镜像中成功地运行编译好的Go应用程序。 但是,当我不想将其作为root运行(我假设它正在以root用户身份运行) 并且在dockerfile中定义了USER nobody时,我遇到了问题。
014/10/25 06:07:10 Error response from daemon: Cannot start container
4822f34e54e20bb580f8cd1d38d7be3c828f28595c2bebad6d827a17b4c2fe21:
finalize namespace setup user get supplementary groups Unable to find user nobody
这是我的Dockerfile文件
FROM scratch
ADD lichtpunkt_go_linux_amd64 /lichtpunkt_go_linux_amd64
ADD web /web
USER nobody
CMD ["./lichtpunkt_go_linux_amd64"]
EXPOSE 3001
编辑 ------------
事实证明,Scratch非常空洞,非常空洞。
RUN useradd将执行/bin/sh -c useradd,但没有/bin/sh。 RUN ["useradd"]会直接执行,但是没有useradd。 我必须添加rootfs.tar并从零开始构建东西。
我将使用Debian,因为我不想在容器内以root身份运行任何东西,因为...
COPY
而不是ADD
。这是官方推荐。 - Константин Ван