Dockerfile に CMD または ENTRYPOINT を記述する必要がありますか? 質問する

Dockerfile に CMD または ENTRYPOINT を記述する必要がありますか? 質問する

CMDとENTRYPOINTに関するドキュメントを読みました

https://docs.docker.com/engine/reference/builder/#entrypoint

ここでは、表に「NO CMD および NO ENTRYRPOINT は許可されません」と記載されていますが、CMD と ENTRYPOINT なしで Dockerfile を作成し、イメージは正常に構築されました。ここから alpine tar をダウンロードしてください。アルパインタール

Dockerファイル

from scratch 
ADD alpine-minirootfs-3.11.2-x86_64.tar.gz /
COPY . /

イメージの構築:

docker build -t test:1 .
Sending build context to Docker daemon  2.724MB
Step 1/3 : from scratch
-----
Successfully tagged test:1

docker run -ti test:1 /bin/sh
/ # 

うまくいきました!! では、なぜドキュメントには CMD または ENTRYPOINT のいずれかが必要であると記載されているのでしょうか?

ベストアンサー1

コマンドラインの最後にコマンドを指定すると、docker runが提供 (または上書き) されますCMD。同様に、docker run --entrypointオプションも が提供 (または上書き) されますENTRYPOINT。あなたの例では、コンテナが実行すべきことが存在するようにコマンドを指定しました/bin/sh。コマンドを省略すると、エラーが発生します。

スタイル上、Dockerfiles では、CMDすでにアプリケーションを自動的に実行しているベースイメージ ( nginx、 ) を拡張しない限り、ほぼ常に を宣言する必要があります。これにより、より具体的なコマンドライン呼び出しを覚えていなくても、イメージを取得して、その中に埋め込まれたアプリケーションを起動できるようtomcatになります。docker run

おすすめ記事