[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 身份运行?
根据文档,您可以使用用户/组的ID:
传递数字 ID 时,用户不必存在于容器中。
来源:https://docs.docker.com/engine/reference/run/#user
命令可能如下所示:
docker run -p 6379:6379 --user 1001 redisc
主机和容器是完全分开的。在尝试以该用户身份运行内容之前,您需要创建
myuser
inside redisc 容器。
您可以以只读方式挂载主机用户信息
# 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}"
我错误地认为权限被拒绝错误与访问我的文件系统有关。我构建了一个以 bash 脚本作为入口点的容器,但在构建映像之前没有给自己执行权限。
chmod +x entrypoint.sh
并重建图像解决了我的问题。
[root@host ~]# docker run --user=toto -ti fedora:26 uname
/usr/bin/docker-current:来自守护进程的错误响应:linux 规范用户: 无法找到用户 toto:passwd 文件中没有匹配的条目。
[root@host ~]# docker run --user=
-ti fedora:26 unameid -u toto
Linux
@马蒂亚斯 来源:https://docs.docker.com/engine/reference/run/#user
docker run -p 8501:8501 --user 1001 -t imagename
这个命令对我有用