はじめに
エントリポイント およびCMD Dockerイメージのプロセスを定義するDockerfileの命令です。コンテナの実行方法に応じて、一方を使用することも、両方を組み合わせることもできます。
1つの違いは、 CMDとは異なります。 、 ENTRYPOINTを上書きすることはできません 新しいコマンドラインパラメータを追加するだけでコマンドを実行できます。 ENTRYPOINTをオーバーライドするには、 docker runを変更する必要があります 特定の構文に従ったコマンド。
このチュートリアルでは、dockerrunコマンドを使用してENTRYPOINTをオーバーライドする方法を学習します。
前提条件
- コマンドラインへのアクセス
- sudoを持つユーザー 特権
- 実行中のDockerインスタンス
- 既存のDockerイメージ
Dockerの実行でENTRYPOINTをオーバーライドする
このコマンドをオーバーライドする方法を説明するために、メッセージ Hello Worldをエコーするコンテナーを実行します。 DockerfileでENTRYPOINTとCMDを組み合わせます。
Dockerfileで、 ENTRYPOINT コマンドは実行可能ファイルを定義し、 CMD デフォルトのパラメータを設定します。
FROM ubuntu
MAINTAINER sofija
RUN apt-get update
ENTRYPOINT [“echo”, “Hello”]
CMD [“World”] このファイルからイメージを作成し、それを使用してDockerコンテナーを実行すると、出力は次のように表示されます。
docker runに目的のパラメーターを追加することで、デフォルトのCMDを簡単にオーバーライドできます。 コマンド:
sudo docker run [container_name] [new_parameter]
以下の例では、CMDパラメータ Worldを変更しました 、 Sofijaを追加する コマンドに。その結果、出力には Hello Sofijaが表示されます。 。
ただし、デフォルトの実行可能ファイルをオーバーライドして、たとえば、コンテナー内でシェルを実行したい場合があります。その場合は、 --entrypointを使用する必要があります 次の構文を使用して、コンテナにフラグを付けて実行します。
sudo docker run --entrypoint [new_command] [docker_image] [optional:value] この例のデフォルトのエコーメッセージをオーバーライドしてコンテナをインタラクティブに実行するには、次のコマンドを使用します。
sudo docker run -it --entrypoint /bin/bash [docker_image] 出力は、コンテナ内にいることを示しています。