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になる