Dockerfile with ARG to FROM



我正试图为nginx工作人员使用具有不同uid和gid的nginxinc/nginx-unprivileged。为此,我提供了UID和GID docker参数,但它们似乎被默认的参数覆盖了。这是我尝试过的两种变体:

Dockerfile

ARG UID=998
ARG GID=998
# This image allows from parameterized UID/GID
FROM nginxinc/nginx-unprivileged:1.21.4

命令:docker build --tag nginx-uids .

Dockerfile

FROM nginxinc/nginx-unprivileged:1.21.4

命令:docker build--tag nginx uids--build arg UID=998。

后者甚至错误为:[Warning] One or more build-args [UID] were not consumed,这表示它不使用UID。

我一定少了什么东西,但我搞不清是什么。谢谢!

UIDGID在构建图像时只是arguments。这似乎没有被使用。

换句话说,ARG是在构建图像时使用的,而不是重复使用图像。

您不能使用docker run--user参数,因为图像文件将根据图像Dockerfile内容归UID=101GID=101所有。但没关系,它已经和那个用户一起运行了,而不是root。

事实证明,FROM不会受到ARGS的影响,因为层已经构建好了。为了回答我自己的问题:为了让ARGS发挥作用,我本可以使用:

docker build -t nginxinc/docker-nginx-unprivileged --build-arg UID=998 --build-arg GID=999 'https://github.com/nginxinc/docker-nginx-unprivileged.git#main:stable/debian'

然后根据该图像构建。

我选择从Dockerfile编辑用户(这种方法不适用于docker nginx unprivileged,因为那里的用户已经在运行nginx主进程(。

FROM nginx:1.21.4
RUN usermod -u 998 -o nginx && groupmod -g 999 -o nginx

最新更新