Was ist der Unterschied zwischen Docker und Docker-Compose?

237

dockerund docker-composescheinen mit derselben Docker-Datei zu interagieren. Was ist der Unterschied zwischen den beiden Tools?

Hafiz
quelle

Antworten:

270

Die dockerCLI wird verwendet, wenn einzelne Container auf einer Docker-Engine verwaltet werden. Es ist die Client-Befehlszeile, um auf die Docker-Daemon-API zuzugreifen.

Mit der docker-composeCLI kann eine Anwendung mit mehreren Containern verwaltet werden. Außerdem werden viele der Optionen, die Sie auf der docker runCLI eingeben würden, docker-compose.ymlzur einfacheren Wiederverwendung in die Datei verschoben. Es funktioniert als Front-End- "Skript" auf derselben Docker-API, die auch von verwendet wird docker, sodass Sie alles docker-composemit dockerBefehlen und viel Shell-Scripting tun können . Weitere Informationen finden Sie in dieser Dokumentation zu Docker-Compose .


Update für den Schwarmmodus

Seit diese Antwort veröffentlicht wurde, hat Docker eine zweite Verwendung von docker-compose.yml-Dateien hinzugefügt. Ab dem yml-Format der Version 3 und Docker 1.13 können Sie das yml mit Docker-Compose verwenden und auch einen Stapel im Docker-Schwarmmodus definieren. Für Letzteres müssen Sie verwenden docker stack deploy -c docker-compose.yml $stack_namestatt docker-compose upund dann den Stapel mit verwalten dockerBefehle statt docker-composeBefehle. Das Mapping ist eins zu eins zwischen den beiden Verwendungszwecken:

  • Projekt erstellen -> Schwarmstapel: Eine Gruppe von Diensten für einen bestimmten Zweck
  • Compose Service -> Swarm Service: Ein Image und seine Konfiguration, möglicherweise vergrößert.
  • Container erstellen -> Schwarm Aufgabe: Ein einzelner Container in einem Dienst

Weitere Informationen zum Schwarmmodus finden Sie in der Dokumentation zum Schwarmmodus des Dockers .

BMitch
quelle
76

docker verwaltet einzelne Container

docker-compose verwaltet mehrere Containeranwendungen

Die Verwendung von Docker-Compose erfordert 3 Schritte:

  1. Definieren Sie die App-Umgebung mit einer Docker-Datei
  2. Definieren Sie die App-Dienste in docker-compose.yml
  3. Ausführen docker-compose up, um die App zu starten und auszuführen

Docker-komponieren

Unten finden Sie ein Beispiel für docker-compose.yml aus den Docker-Dokumenten :

services:
  web:
    build: .
    ports:
    - "5000:5000"
    volumes:
    - .:/code
    - logvolume01:/var/log
    links:
    - redis
  redis:
    image: redis
volumes:
  logvolume01: {}
JSON C11
quelle
3
Aus Gründen der Übersichtlichkeit zeigt die Linie build: .im webAbschnitt auf die Position der Docker-Datei, die in Schritt 1 erstellt wurde.
AndrewGentry