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 のシグナルを受信できないようです。
今回は以上です。 最後まで読んでいただき、ありがとうございます。
参考記事

コメント
コメントを投稿