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

问题描述 投票:0回答:6
[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.

但我可以成为主机上的我的用户

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

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

docker
6个回答
36
投票

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

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

来源:https://docs.docker.com/engine/reference/run/#user

命令可能如下所示:

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

16
投票

主机和容器是完全分开的。在尝试以该用户身份运行内容之前,您需要创建

myuser
inside redisc 容器。


4
投票

您可以以只读方式挂载主机用户信息

# user user and group IDs:
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}"

1
投票

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

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


0
投票

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

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

[root@host ~]# docker run --user=

id -u toto
-ti fedora:26 uname

Linux


0
投票

@马蒂亚斯 来源:https://docs.docker.com/engine/reference/run/#user

docker run -p 8501:8501 --user 1001 -t imagename 

这个命令对我有用

© www.soinside.com 2019 - 2024. All rights reserved.