EntryPointとは、Dockerコンテナが起動されたときに実行される最初のコマンドまたはスクリプトを指定します。一方、CMDは、EntryPointに渡されるデフォルトの引数を指定します。つまり、EntryPointは実行されるコマンド自体を指定し、CMDはそのコマンドに渡される引数を指定します。
EntryPointの指定方法は次のようになります:
ENTRYPOINT ["command", "arg1", "arg2"]
ここで、command
は実行するコマンド、arg1
とarg2
はそのコマンドに渡される引数です。EntryPointは、Dockerコンテナが起動されるときに常に実行されるコマンドです。たとえば、次のようなEntryPointが指定された場合、コンテナが起動するとecho
コマンドが実行されます:
ENTRYPOINT ["echo", "Hello, Docker!"]
CMDディレクティブにはいくつかの異なる指定方法があります。以下の例では、CMDを使用してコンテナが起動されたときに実行されるデフォルトのコマンドと引数を指定します。これは、ENTRYPOINTで指定されたコマンドに対してデフォルトの引数を提供するものです。
CMD ["default_arg1", "default_arg2"]
CMDディレクティブは、Dockerfile内で複数回指定することができます。最後に指定されたCMDが有効になります。また、CMDディレクティブは、Dockerコマンドラインから実行時にオーバーライドすることもできます。
EntryPointとCMDの組み合わせにより、柔軟なコンテナの起動が可能になります。EntryPointを指定することで、コンテナが起動されたときに必ず実行されるコマンドを定義できます。また、CMDを使用することで、デフォルトの引数を提供し、必要に応じてオーバーライドすることができます。
以上が、DockerfileのEntryPointとCMDディレクティブの違いと使い方の基本的な説明です。これらのディレクティブを適切に使用することで、より柔軟なDockerコンテナの作成が可能となります。
この記事では、さらに詳細なコード例や応用的な使用方法についても触れることができます。