Dockerfile の CMD と ENTRYPOINT を掻い摘んで理解する
この記事のまとめ:
- Dockerfile の CMD と ENTRYPOINT 命令を掻い摘んで説明します。
背景
これまで Dockerfile を書いてくるにあたって、 CMD
命令と ENTRYPOINT
命令をなんとなく理解していたようでよく理解できていませんでした。ちゃんと理解しようと思って、調べた内容を掻い摘んでシンプルに説明します。
Docker イメージの起動時の実行プロセス
CMD
と ENTRYPOINT
はいずれも起動時に何かのプロセスを実行するコンテナーとして Docker イメージを作成するための命令です。
これらの記載がない Docker イメージは up
コマンドでコンテナーを起動しても何も実行しません。
起動プロセスの指定
起動プロセスの実行優先順位
ENTRYPOINT
命令docker run
の後にコマンドを記述docker run --entrypoint
オプションでENTRYPOINT
命令を書き換え可能
CMD
命令
CMD 命令の役割
CMD
命令には2つの役割があります。
ENTRYPOINT
が記述されていないときにおいてdocker run
でコマンドを記述しなかったときのデフォルトで実行されるコマンドENTRYPOINT
が記述されているときにおいて、ENTRYPOINT
の引数
コマンドの配列としての記述
Dockerfile に CMD
や ENTRYPOINT
命令でコマンドを記述する際には、コマンドをカギ括弧 [<command>]
で囲って配列として記述するべきです。
カギ括弧に囲わなくてもコマンドを入力することはできます。ただし、カギ括弧を使わない場合には、docker stop
でコンテナーを終了したとき、アプリケーションは SIGTERM
のシグナルを受信できないようです。
今回は以上です。 最後まで読んでいただき、ありがとうございます。
参考記事
コメント
コメントを投稿