docker
und docker-compose
scheinen mit derselben Docker-Datei zu interagieren. Was ist der Unterschied zwischen den beiden Tools?
quelle
docker
und docker-compose
scheinen mit derselben Docker-Datei zu interagieren. Was ist der Unterschied zwischen den beiden Tools?
Die docker
CLI 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-compose
CLI kann eine Anwendung mit mehreren Containern verwaltet werden. Außerdem werden viele der Optionen, die Sie auf der docker run
CLI eingeben würden, docker-compose.yml
zur 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-compose
mit docker
Befehlen 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_name
statt docker-compose up
und dann den Stapel mit verwalten docker
Befehle statt docker-compose
Befehle. Das Mapping ist eins zu eins zwischen den beiden Verwendungszwecken:
Weitere Informationen zum Schwarmmodus finden Sie in der Dokumentation zum Schwarmmodus des Dockers .
docker
verwaltet einzelne Container
docker-compose
verwaltet mehrere Containeranwendungen
Die Verwendung von Docker-Compose erfordert 3 Schritte:
docker-compose up
, um die App zu starten und auszuführenUnten 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: {}
build: .
imweb
Abschnitt auf die Position der Docker-Datei, die in Schritt 1 erstellt wurde.