我使用官方的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 回答
理想情况下,您可以使用正确的预期ID制作自己的图像(基于现有图像):
请参阅 Marc Campbell 中的“Understanding how uid and gid work in Docker containers”:
OP增加:
实际上,还有另一种选择,它允许您不修改图像而不添加用户: userns or user remap (since docker 1.10) . 但是,就像我mention here,你需要docker 17.06以避免一些错误 .