クラウドとコンテナの基礎
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 はビルドのときに実行され、結果がイメージに保存されます。起動のたびにインストールし直すことはありません。