Help us understand the problem. What is going on with this article?

dockerのENTRYPOINTとCMDの書き方と使い分け、さらに併用

2019-06-01 追記

この記事より DockerfileのCMDとENTRYPOINTを改めて解説する - Qiita のほうがお勧めです。

元記事

Dockerfile referenceDockerfile Best PracticesにENTRYPOINTとCMDの書き方と使い分け、さらに併用について書かれていました。

ENTRYPOINTとCMDの引数の書式

ENTRYPOINTの書式は以下の2種類があります。

  • ENTRYPOINT ["executable", "param1", "param2"] (シェルを介さずに実行。この形式を推奨)
  • ENTRYPOINT command param1 param2 (シェルを介して実行)

シェルを介して実行するほうは/bin/sh -cを使って実行するそうです。

CMDの書式は以下の3種類です。

  • CMD ["executable","param1","param2"] (シェルを介さずに実行。この形式を推奨)
  • CMD ["param1","param2"] (ENTRYPOINTのデフォルト引数として利用する場合)
  • CMD command param1 param2 (シェルを介して実行)

ENTRYPOINTとCMDの併用

Dockerfile Best Practicesの"5. CMD and ENTRYPOINT better together"にENTRYPOINTとCMDを併用する例があります。

ENTRYPOINT ["/usr/bin/rethinkdb"]

CMD ["--help"]

のように書きます。

すると、docker runのときに

docker run crosbymichael/rethinkdb

のようにイメージの後に引数無しで実行した場合は、CMDの--helpが使われて、/usr/bin/rethinkdb --helpが実行されることになります。

一方、

docker run crosbymichael/rethinkdb --bind all

のようにイメージの後に引数有りで実行した場合は、CMDの値は使われず、/usr/bin/rethinkdb --bind allが実行されることになります。

docker run --entrypoint="" で変更も可能

docker runのリファレンスによると --entrypoint オプションを使えば DockerfileENTRYPOINT の値を上書きすることも可能です。

Why do not you register as a user and use Qiita more conveniently?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away