我的dockerfile:
FROM httpd:2.4
RUN useradd -u 8877 john
USER john
// docker build -t my-apache2 .
// docker run -dit --name my-running-app -p 8080:80 my-apache2
任何帮助将不胜感激
答案 0 :(得分:2)
如果您要添加特定用户,则解决方案是创建自定义图像,该图像扩展基本图像并添加用户,例如
FROM:httpd
USER <user>[:<group>]
然后您可以与该用户一起运行容器
docker run --user <user>[:<group>] httpd
在不扩展基本映像的情况下,您将从Docker引擎收到以下错误消息
docker: Error response from daemon: unable to find user <user>: no matching entries in passwd file
参考:https://docs.docker.com/engine/reference/builder/#user
如果要与非root用户一起使用库存映像,则可以使用UID代替它来使用上面的用户名。这将使linux以该用户ID的身份运行,而不必检查它是否存在。
当然,与其交互的任何文件都必须可由该用户写入。但是,例如,通过添加--user $(id -u):$(id -g)
,将容器中的默认用户和组更改为您自己的用户和组:
docker run -dit --name my-running-app -p 8080:80 --user $(id -u):$(id -g) my-apache2
在此处查看docker命令行参考 https://docs.docker.com/engine/reference/commandline/run/ https://docs.docker.com/engine/reference/commandline/exec/