如何以非root用户身份运行我的容器

时间:2020-05-20 05:58:24

标签: docker

我的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

任何帮助将不胜感激

1 个答案:

答案 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/