Docker:docker:来自守护进程的错误响应:linux spec用户:无法找到用户myuser:passwd文件中没有匹配的条目

时间:2018-01-29 17:49:05

标签: docker

[root@mymachine redisc]# docker run -p 6379:6379 --user myuser redisc
docker: Error response from daemon: linux spec user: unable to find user myuser: no matching entries in passwd file.

但我可以成为主持人的myuser

[root@mymachine redisc]# sudo su myuser
[myuser@mymachine redisc]#

我如何能够在容器中以myuser身份运行?

5 个答案:

答案 0 :(得分:1)

主机和容器完全分开。在尝试以该用户身份运行内容之前,您需要在redisc容器中创建<{1}}

答案 1 :(得分:0)

根据文档,您可以使用用户/组的ID:

  

传递数字ID时,用户不必在容器中。

来源:http://www.w3.org/TR/2003/PR-owl-guide-20031209/food]

命令如下所示:

docker run -p 6379:6379 --user 1001 redisc

答案 2 :(得分:0)

  

[root @ host〜]#docker run --user = toto -ti fedora:26 uname

     

/ usr / bin / docker-current:来自守护程序的错误响应:linux spec用户:   找不到用户toto:passwd文件中没有匹配的条目。

     

[root @ host〜]#docker run --user = id -u toto -ti fedora:26 uname

     

Linux

答案 3 :(得分:0)

您可以装载只读的主机用户信息

usr="--user $(id -u myuser):(id -G myuser)"
mountdirs="-v /etc/passwd:/etc/passwd:ro -v /etc/shadow:/etc/shadow:ro -v /etc/group:/etc/group:ro"

options="-p 6379:6379"
# I use 
# options="-ti --rm --entrypoint=/bin/bash"

image=redisc

docker run ${options} ${usr} ${mountdirs} -w /home/myuser "${image}"

答案 4 :(得分:0)

我错误地认为权限被拒绝错误与访问我的文件系统有关。我构建了一个以 bash 脚本作为入口点的容器,但在构建映像之前没有给自己执行权限。

chmod +x entrypoint.sh 并重建图像解决了我的问题。