web-dev-qa-db-ja.com

dockerとdocker-composeの違いは何ですか

dockerdocker-composeは同じdockerFileと相互作用しているようですが、2つのツールの違いは何ですか?

181
Hafiz

dockercliは、dockerエンジン上の個々のコンテナを管理するときに使用されます。 docker daemon apiにアクセスするのはクライアントのコマンドラインです。

docker-composecliを使用して、マルチコンテナアプリケーションを管理できます。また、docker run cliで入力する多くのオプションをdocker-compose.ymlファイルに移動して再利用しやすくしています。これは、dockerで使用されているのと同じdocker apiの上にあるフロントエンドの "スクリプト"として機能するので、docker-composedockerコマンドおよび多くのシェルスクリプトを使ってできることはすべて実行できます。詳しくは docker-compose のこのドキュメントを参照してください。


スウォームモード用の更新

この回答が投稿されてから、dockerはdocker-compose.ymlファイルの2回目の使用を追加しました。 バージョン3のymlフォーマット およびdocker 1.13から始めて、docker-composeでymlを使用したり、dockerのswarmモードでスタックを定義したりすることもできます。後者を行うには、docker stack deploy -c docker-compose.yml $stack_nameの代わりにdocker-compose upを使用してから、docker-composeコマンドの代わりにdockerコマンドを使用してスタックを管理する必要があります。マッピングは、2つの用途の間のマッピングです。

  • プロジェクトの作成 - > Swarm Stack:特定の目的のための一連のサービス
  • Compose Service - > Swarm Service:1つの画像とその構成、おそらく拡大されています。
  • コンテナの作成 - >スウォームタスク:サービス内の単一のコンテナ

スウォームモードの詳細については、 docker's swarm mode documentation を参照してください。

218
BMitch

dockerは単一コンテナーを管理します

docker-composeは複数のコンテナアプリケーションを管理します

docker-composeを使うには3つのステップが必要です。

  1. Dockerfileを使用してアプリ環境を定義する
  2. アプリサービスをdocker-compose.ymlで定義します。
  3. アプリを起動して実行するには、docker-compose upを実行します。

docker-compose up

以下は、 docker docs からのdocker-compose.ymlの例です。

services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
46
JSON C11