雲端與容器基礎
FROM python:slim
WORKDIR /app
COPY requirements.txt .
RUN pip install -r requirements.txt
COPY . .
CMD ["python", "app.py"]在上面的 Dockerfile 中,以 docker build 建置映像檔時執行的指令,與以 docker run 啟動容器時執行的指令,其組合下列何者正確?
- Abuild 時:pip install,run 時:python app.py
- Bbuild 時:pip install 與 python app.py,run 時:python app.py
- Cbuild 時:無,run 時:pip install 與 python app.py
查看答案與解析
正確答案:A. build 時:pip install,run 時:python app.py
RUN 在建置映像檔時執行指令,並把結果(這裡是安裝好的函式庫)作為新的層存入映像檔。CMD 只是把啟動容器時要執行的預設指令記錄為映像檔的設定,建置時不會執行。因此函式庫只在建置時安裝1次,每次啟動容器都會執行 python app.py。若在 docker run 的映像檔名稱後面寫上指令,CMD 的內容就會被該指令取代。
- A. 正確。RUN 在建置時執行,CMD 在啟動時執行。
- B. CMD 在建置時不會執行,只是記錄啟動時的預設指令。
- C. RUN 在建置時執行,結果存入映像檔。不會在每次啟動時重新安裝。