首页 文章

docker:在启动容器中设置运行用户

提问于
浏览
1

我使用官方的golang docker镜像来编译我的go程序,并将生成的可执行文件放在映射到我的主机目录的卷上 .

问题是docker生成的文件属于root:root,这非常烦人,因为我不想通过sudo运行我的脚本 .

我搜索了使docker容器以非root方式运行的解决方案,但我找到的方法需要更改Dockerfile并将用户添加到图像,例如

http://gbraad.nl/blog/non-root-user-inside-a-docker-container.html

有没有办法使docker容器作为主机上的CURRENT用户运行,即用户A运行此图像将生成文件属于A:A,而用户B生成文件属于B:B,而A和B都是在主机上定义的用户(即卷所在的位置),而不需要通过Dockerfile将A和B添加到映像中?

1 回答

  • 0

    我用base alphine-golang加git工具制作的),在我的笔记本电脑上使用-u arg运行,但如果我在debian虚拟机上运行它,它告诉我uid 1001没有用户存在

    理想情况下,您可以使用正确的预期ID制作自己的图像(基于现有图像):

    RUN useradd -r -u 1001 -g appuser appuser
    USER appuser
    

    请参阅 Marc Campbell 中的“Understanding how uid and gid work in Docker containers”:

    UID/GID wiht Docker


    OP增加:

    我理解原因,因为这正是我试图避免的:将用户添加到图像中 . 如果我的问题没有解决,我会尝试直接修改容器 .

    实际上,还有另一种选择,它允许您不修改图像而不添加用户: userns or user remapsince docker 1.10) . 但是,就像我mention here,你需要docker 17.06以避免一些错误 .

相关问题