1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

個人的な備忘録:Dockerコンテナの起動コマンド「CMD」と「ENTRYPOINT」の違いを簡単にまとめてみた

Last updated at Posted at 2025-02-05

はじめに

Docker では、コンテナ起動時に実行するコマンドを CMDENTRYPOINT で指定できます。

どちらも似た機能を持っていますが、使い方を間違えると思った通りに動作しないことがあります。

この記事では、それぞれの違いや使い分けのポイントを簡潔にまとめます。

書こうと思ったきっかけ

Dockerfile を書いているとき、CMD ["./app"] を指定したのにdocker run myapp lsls が実行されてしまい、思った動作と違って驚きました。

調べると、CMD は上書きされる仕様で、確実にコマンドを実行したいなら ENTRYPOINT を使うべきと分かりました。

この違いを整理しておけば、同じように迷うことが減ると思い、まとめることにしました。

CMD とは?

CMDコンテナ起動時に実行するデフォルトのコマンド を指定するための Dockerfile の命令です。

ただし、docker run 実行時に別のコマンドを指定すると、CMD の内容は上書きされます。

使い方

Dockerfile で以下のように指定します。

CMD ["echo", "Hello, World!"]

動作の特徴

  • CMD で指定したコマンドは、デフォルトの実行コマンド となる。
  • docker run 実行時にコマンドを指定すると、CMD の内容は上書きされる

実行例

docker run myapp
# → "Hello, World!" が表示される
docker run myapp ls
# → "ls" が実行される(CMD の "echo Hello, World!" は上書きされる)

ENTRYPOINT とは?

ENTRYPOINTコンテナ起動時に必ず実行するコマンド を指定するための Dockerfile の命令です。

docker run 実行時に別のコマンドを指定しても、ENTRYPOINT の後ろに引数として渡されるため、上書きされません。

使い方
Dockerfile で以下のように指定します。

ENTRYPOINT ["echo"]

動作の特徴

  • ENTRYPOINT で指定したコマンドは 強制的に実行される
  • docker run 実行時に指定したコマンドは、ENTRYPOINT引数として渡される

実行例

docker run myapp Hello, World!
# → "Hello, World!" が表示される(echo の引数として渡される)
docker run myapp ls
# → "ls" が実行される(echo ls)

CMD と ENTRYPOINT の違いまとめ

Docker では CMDENTRYPOINT の両方を使ってコンテナ起動時に実行するコマンドを指定できますが、それぞれの動作には違いがあります。

比較項目 CMD ENTRYPOINT
主な用途 デフォルトのコマンドや引数を指定 常に実行すべきコマンドを指定
ユーザーが docker run 時にコマンドを上書きできるか できる(例: docker run myapp bashbash が実行される) できない(例: docker run myapp bashbashENTRYPOINT の引数として渡される)
動作の安定性 上書き可能なので、意図せず変わる可能性がある 強制的に実行されるため、意図した動作を保証しやすい

使い分けのポイント

  • CMD はデフォルトのコマンドを指定するが、上書き可能
  • ENTRYPOINT強制的にコマンドを実行し、意図した動作を保証しやすい。
  • 確実に実行すべきコマンドがある場合は ENTRYPOINT を使うのが適切

まとめ

最後までお読みいただき、ありがとうございました。Dockerコンテナの起動コマンド「CMD」と「ENTRYPOINT」の違いについて、理解が深まったなら嬉しいです。

今後も、このような基礎的な内容を分かりやすく整理し、丁寧にまとめていこうと思います。

1
1
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
1
1

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?