报错信息
在制作Docker镜像的过程中,完成软件安装等操作后,一般会切换为普通用户启动相应的服务,就需要用到USER
指令。但有时候这个指令会报错:
docker: Error response from daemon: unable to find user : no matching entries in passwd file.
解决方案
如果遇到这个问题,可以在使用USER
指令之前,先创建用户。
RUN useradd -s /bin/bash your_user_name
网上有很多其他的方案,其中一个是使用USER ID代替用户名,的确可以成功,但是进入容器后,会是普通用户权限,很多操作都执行不了,如果容器是用来开发和调试的,就不太方便了。
相关知识
Docker官方文档中关于USER
指令的说明。
USER <user>[:<group>]
或者
USER <UID>[:<GID>]
The USER
instruction sets the user name (or UID) and optionally the user group (or GID) to use when running the image and for any RUN
, CMD
and ENTRYPOINT
instructions that follow it in the Dockerfile
.
“USER”指令设置运行映像时要使用的用户名(或UID)和可选的用户组(或GID),“Dockerfile”中紧随其后的任何“RUN”、“CMD”和“ENTRYPOINT”指令都将用该用户执行。
请注意,当为用户指定组时,用户将只有指定的组成员资格。任何其他配置的组成员身份都将被忽略。
需要注意
当用户没有指定组时,镜像(或下一条指令)将在
root
组运行。
在容器中创建Windows用户的方法
在Windows上,如果用户不是内置帐户,则必须首先创建该用户。这可以通过在Dockerfile中调用
net user
命令来完成。文章来源:https://www.toymoban.com/news/detail-494575.html
RUN net user /add Patrick
文章来源地址https://www.toymoban.com/news/detail-494575.html
到了这里,关于Dockerfile: unable to find user xxx : no matching entries in passwd file解决方案的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!