Docker WORKDIR-在我的机器还是容器上?

时间:2019-07-09 15:54:01

标签: docker dockerfile

Dockerfile中的WORKDIR关键字指的是什么上下文?是在我正在生产的容器内部还是内部运行docker build的情况下?

我发现自己经常将RUN cd && ...放入我的docker文件中,希望有另一种方式,感觉好像我丢失了一些东西。

3 个答案:

答案 0 :(得分:3)

它在容器内。

参加Dockerfile参考站点https://docs.docker.com/engine/reference/builder/#workdir

  

WORKDIR指令为Dockerfile中跟在其后的所有RUN,CMD,ENTRYPOINT,COPY和ADD指令设置工作目录。如果WORKDIR不存在,即使以后的Dockerfile指令中未使用它,也将创建它。

因此,您无需添加RUN cd && ...,就可以做到:

WORKDIR /path/to/dir
RUN command

答案 1 :(得分:1)

function设置图像内的目录,因此可以避免进行bind调用。

答案 2 :(得分:1)

Dockerfile中的

所有路径(COPYADD指令的前半部分除外)均指映像文件系统路径。 COPYADD的源路径是相对于构建上下文(/命令末尾的目录)的相对路径(即使它们以docker build开头),通常包含Dockerfile的目录)。 Dockerfile中的任何内容都无法引用主机或构建上下文树之外的内容上的绝对路径。

这两个Dockerfile之间的唯一区别是第二个命令在其中启动的目录。

RUN cd /dir && command1
RUN command2
WORKDIR /dir
RUN command1
RUN command2