いつdocker service create
コマンドを使用し、いつdocker run
コマンドを使用しますか?
要するに:Dockerサービスは、Dockerコンテナが実行されるようにDocker swarmを使用してマスターノードを設定したときに主に使用されます分散環境で、簡単に管理できます。
Docker run:docker runコマンドは、まず指定されたイメージ上に書き込み可能なコンテナーレイヤーを作成し、次に指定されたコマンドを使用してそれを開始します。
つまり、docker runはAPI/containers/create、次に/ containers /(id)/ startと同等です
ソース: https://docs.docker.com/engine/reference/commandline/run/#parent-command
Dockerサービス:Dockerサービスは、より大きなアプリケーションのコンテキスト内のマイクロサービスのイメージになります。サービスの例には、HTTPサーバー、データベース、または分散環境で実行する他の種類の実行可能プログラムが含まれます。
サービスを作成するとき、使用するコンテナイメージと、実行中のコンテナ内で実行するコマンドを指定します。次のようなサービスのオプションも定義します。
ソース: https://docs.docker.com/engine/swarm/how-swarm-mode-works/services/#services-tasks-and-containers
「 dockerサービスは新しいdocker run 」と読むことができます。
これらのスライドによると、「docker service create」は「進化した」ドッカー実行に似ています。 コンテナをDocker Swarmにデプロイする する場合は、「サービス」を作成する必要があります。
Dockerサービスは、コンテナの「設計図」のようなものです。できます単純なワーカーをサービスとして定義し、そのサービスを20個のコンテナーに拡張して、キューを非常にすばやく通過します。その後、そのサービスを再び3つのコンテナーに縮小します。また、Swarmを介して、これらのコンテナをSwarmの異なるノードにデプロイできます。
しかし、@ Tristanが提案したように、ドキュメントも読むことをお勧めします。
Docker runは単一のコンテナーを開始します。
Dockerサービスを使用すると、コンテナのグループを(同じイメージから)管理できます。それらをスケーリングする(複数のコンテナーを開始する)か、更新することができます。
例えば
docker service create --name MY_SERVICE_NAME --replicas 3 IMAGE:TAG
iMAGE:TAGイメージに基づくMY_SERVICE_NAMEサービスの3つのタスクを作成します。
詳細については、こちらをご覧ください こちら