
我正在學習線上教學來了解 dockerfiles。有測驗題:
Dockerfile WORKDIR 指令更改目錄:
- 僅適用於 Dockerfile 的其餘部分
- 以及完成的圖像中。
我的選擇(錯誤)是:「1.僅在 Dockerfile 的其餘部分」。
有人可以透過舉例來糾正我,第二個(正確的)答案可能會有好處嗎?
答案1
很多時候,您需要從特定目錄執行程式碼,可能是您正在運行的應用程式操作當前目錄中的文件,可能是應用程式需要當前目錄中的配置,也可能只是應用程式位於當前目錄中。WORKDIR
允許鏡像創建者進行設置,這樣運行容器的人就不需要擔心它。
例如;我之前遇到的一個用例是建立一個 docker 容器,其中包含一個操作目前目錄中檔案的應用程式。如果沒有設置,WORKDIR
您必須將磁碟區綁定到一個位置,然後執行cd /location
每個命令:
docker -v $PWD:/location someimage "cd /location; somecommand"
透過設定WORKDIR
為/location
您可以刪除cd
:
docker -v $PWD:/location someimage somecommand
這方便很多。