Dockerfile中的WORKDIR指令用於指定容器的一個目錄, 容器啟動時執行的命令會在該目錄下執行。
相當於設置容器的工作目錄了。我們來看一個dockerfile文件
#test FROM ubuntu MAINTAINER hello RUN mkdir /mydir RUN echo hello world > /mydir/test.txt WORKDIR /mydir CMD ["more" ,"test.txt"]
假設根據該dockerfile構建的鏡像名為 myimage
1、運行 docker run myimage 輸出 hello world
2、運行 docker run myimage more test.txt 和上面輸出一致
可以看出,more的參數是 test.txt,但沒有指定路徑,卻能成功,說明當前路徑就是上面WORKDIR指令設置的。
如果我們在上面的dockerfile中把WORKDIR指令去掉,創建的容器運行會報文件不存在錯誤。
3、可以在 docker run命令中用 -w參數覆蓋掉WORKDIR指令的設置,如:
執行 docker run -w / myimage
上面的-w參數將容器的工作目錄設置成了根目錄,而根目錄下沒有test.txt文件。
所以結果顯示:test.txt: No such file or directory