docker学习笔记13: Dockerfile指令WORKDIR介绍

Dockerfile中的WORKDIR指令用于指定容器的一个目录,容器启动时执行的命令会在该目录下执行。

相当于设置容器的工作目录了。我们来看一个dockerfile文件

#test 
FROM ubuntu
MAINTAINER JiangLei <[email protected]>
RUN mkdir /mydir
RUN echo hello1 > /mydir/test1.txt
RUN echo hello2 > /mydir/test2.txt
WORKDIR /mydir 
EXPOSE 80 
EXPOSE 81
CMD ["cat", "test1.txt", "test2.txt"]

假设根据该dockerfile构建的镜像名为myimage

  • 运行docker run myimage 输出 hello world
  • 运行docker run myimage more test.txt和下面输出一致

可以看出,more的参数是test.txt,但没有指定路径,却能成功,说明当前路径就是上面WORKDIR指令设置的。

如果我们在上面的dockerfile中把WORKDIR指令去掉,创建的容器运行会报文件不存在错误。

  • 可以在docker run命令中用-w 参数覆盖掉WORKDIR指令的设置,如:
docker run -w /myimage

上面的-w 参数将容器的工作目录设置成了根目录,而根目录下没有test.txt文件。

所以结果显示: test.txt: No such file or directory。

results matching ""

    No results matching ""