【发布时间】:2018-05-22 04:58:50
【问题描述】:
我使用官方的 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 添加到镜像中?
【问题讨论】:
-
只需将
-u标志用于docker run。例如,docker run -u $UID. -
@larsks 这行得通。谢谢!
-
@larsks 有时它不起作用。相同的 docker 镜像(我由基础 alphine-golang 加上 git 工具制作),在我的笔记本电脑上运行 -u arg,但如果我在 debian 虚拟机上运行它,它告诉我没有用户存在 uid 1001跨度>
标签: docker