docker

Dockerfile ENTRYPOINTとCMDについて

More than 1 year has passed since last update.

Dockerfile ENTRYPOINTとCMDについて

参考元

Dockerfile: ENTRYPOINT vs CMD
https://www.ctl.io/developers/blog/post/dockerfile-entrypoint-vs-cmd/

問題

DockerfileのENTRYPOINTとCMDはどう違うのか

結論

共通点

どちらも、containerがstartしたときに実行されるexecutableを指定する

相違点

CLIから実行する際のoverrideする方法が異なる

  • CMD

docker container run <image> <cmd> のようにimageあとの引数でoverrideできる

  • ENTRYPOINT

docker container run --entrypoint <cmd> <image> のようにoverrideするには明示的に --entrypoint flagが必要

補足

FROM ubuntu:trusty
ENTRYPOINT ["/bin/ping", "-c", "3"]
CMD ["localhost"]

のように併用すると CMDの値が ENTRYPOINTに追加され, "/bin/ping -c 3 localhost" が実行コマンドになる.
ENTRYPOINTとCMDを併用する場合は Exec formでENTRYPOINTとCMDを記述しなければいけない点に注意

ENTRYPOINTはこのcontainerがENTRYPOINTで指定されたコマンドで起動されることを意図しているという強いmessageになる