我有2个Docker镜像,第一个Dockerfile使用以下方式创建用户:

RUN useradd -m newuser

然后将其切换到用户和工作空间,如下所示:
USER newuser
WORKDIR /home/newuser/

第二个docker文件使用FROM语句从第一个图像读取。
USERWORKDIR指令是否应该保留在第二个文件中而不必再次放入?

最佳答案

从此Dockerfile中:

FROM debian:8

ENV HOME /home/user
RUN useradd --create-home --home-dir $HOME user \
    && mkdir -p $HOME \
    && chown -R user:user $HOME

WORKDIR $HOME
USER user

构建并稍后运行:
$docker build -t deb .
$docker run --rm deb bash -c "pwd && whoami"
/home/user
user

现在,基于上一个图像,来自此Dockerfile:
FROM deb
ENTRYPOINT [ "sh" ]

构建并运行:
$docker build -t debb .
$docker run --rm -it debb
[container]$ pwd && whoami
/home/user
user

因此,是的,USERWORKDIR是继承的。
Client:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 15:38:58 2016
 OS/Arch:      linux/amd64

Server:
 Version:      1.10.3
 API version:  1.22
 Go version:   go1.5.3
 Git commit:   20f81dd
 Built:        Thu Mar 10 15:38:58 2016
 OS/Arch:      linux/amd64

关于docker - USER和WORKDIR指令是否保存在下游docker文件中?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/36134994/

10-09 14:51