はじめに
エントリポイント および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]
出力は、コンテナ内にいることを示しています。