Dockerfile WORKDIR 也保留在映像中

Dockerfile WORKDIR 也保留在映像中

我正在學習線上教學來了解 dockerfiles。有測驗題:

Dockerfile WORKDIR 指令更改目錄:

  1. 僅適用於 Dockerfile 的其餘部分
  2. 以及完成的圖像中。

我的選擇(錯誤)是:「1.僅在 Dockerfile 的其餘部分」。

有人可以透過舉例來糾正我,第二個(正確的)答案可能會有好處嗎?

文檔中的 WORKDIR

答案1

很多時候,您需要從特定目錄執行程式碼,可能是您正在運行的應用程式操作當前目錄中的文件,可能是應用程式需要當前目錄中的配置,也可能只是應用程式位於當前目錄中。WORKDIR允許鏡像創建者進行設置,這樣運行容器的人就不需要擔心它。

例如;我之前遇到的一個用例是建立一個 docker 容器,其中包含一個操作目前目錄中檔案的應用程式。如果沒有設置,WORKDIR您必須將磁碟區綁定到一個位置,然後執行cd /location每個命令:

docker -v $PWD:/location someimage "cd /location; somecommand"

透過設定WORKDIR/location您可以刪除cd

docker -v $PWD:/location someimage somecommand

這方便很多。

相關內容