我已经使用 Dockerfile 构建了 Docker nginx“基本”映像,其片段如下:
FROM ubuntu:14.04
MAINTAINER Me <me.net>
RUN apt-get update && apt-get install -y supervisor
ADD supervisord.conf /etc/supervisor/conf.d/
RUN apt-get install -y nginx
..
然后将该映像与数据库容器和数据卷链接。后来,我想向容器添加一个用户,以便我可以作为该用户运行应用程序,因此我向 Dockerfile 添加了“RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33”指令,这样我的 Dockerfile 将如下所示:
FROM ubuntu:14.04
MAINTAINER Me <me.net>
RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33
RUN apt-get update && apt-get install -y supervisor
ADD supervisord.conf /etc/supervisor/conf.d/
RUN apt-get install -y nginx
..
然后我重新生成图像docker build -rm .
,然后再次运行整个堆栈docker-compose up
(我在 docker-compose.yml 中配置了堆栈)。
不幸的是,虽然RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33
步骤没有出错,当我进入正在运行的nginx容器的shell时,luqo33
用户或luqo33
小组不在那里。然后我执行了相同的命令(groupadd -r luqo33 && useradd -r -g luqo33 luqo33
)从 shell 中,组和用户已按预期添加。
为什么不呢RUN groupadd -r luqo33 && useradd -r -g luqo33 luqo33
在 Dockerfile 中将用户和组添加到重建时的新容器中?我也尝试过docker build --no-cache .
具有相同的效果(或缺乏效果)。我在这里缺少什么?
为了确保您的构建命令没有使用任何缓存层,请使用--no-cache https://docs.docker.com/reference/commandline/cli/#build option.
docker build --no-cache .
如果你想与 docker-compose 一样:
docker-compose build --no-cache
另外,由于您正在使用docker 撰写要启动容器,请确保运行docker-compose rm
否则 docker-compose 将重用之前构建的镜像。
本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)