Docker 2024 04/Docker Compose: Unterschied zwischen den Versionen
Drlue (Diskussion | Beiträge) |
Drlue (Diskussion | Beiträge) |
||
| (29 dazwischenliegende Versionen desselben Benutzers werden nicht angezeigt) | |||
| Zeile 4: | Zeile 4: | ||
Der Standard Name für '''Docker Compose''' Dateien ist docker-compose.yml. | Der Standard Name für '''Docker Compose''' Dateien ist docker-compose.yml. | ||
Mit dem Parameter {{BSL|-f}} kann jedoch direkt eine '''Docker Compose''' Datei angegeben werden. | Mit dem Parameter {{BSL|-f}} kann jedoch direkt eine '''Docker Compose''' Datei angegeben werden. | ||
Z.b.: {{BSL|docker-compose -f service1.yml}} | Z.b.: {{BSL|docker-compose -f service1.yml}} | ||
=== Beispiel 1) Erster Container === | === Beispiel 1) Erster Container === | ||
Beispiel siehe [[Docker_2024_04/Containers#Beispiel_1):_Erster_Container_start|hier]] | |||
Inhalt '''docker-compose.yml''' | Inhalt '''docker-compose.yml''' | ||
| Zeile 21: | Zeile 23: | ||
image: ubuntu:22.04 | image: ubuntu:22.04 | ||
#Command to run | #Command to run | ||
command: bash | command: ["bash"] | ||
#Parameter -it | #Parameter -it | ||
stdin_open: true | stdin_open: true | ||
| Zeile 50: | Zeile 52: | ||
node_webserver: | node_webserver: | ||
#Container name, --name | #Container name, --name | ||
container_name: | container_name: example5 | ||
#Used image | #Used image | ||
image: example5:1.0 | image: example5:1.0 | ||
| Zeile 74: | Zeile 76: | ||
=== Beispiel 3) Node Webserver (existing Image, Volume Mount) === | === Beispiel 3) Node Webserver (existing Image, Volume Mount) === | ||
Beispiel siehe [[Docker_2024_04/Containers#Beispiel_5.1):_Node_Webserver_Using_Named_Volume|hier]] | |||
Inhalt '''docker-compose.yml''' | Inhalt '''docker-compose.yml''' | ||
| Zeile 82: | Zeile 84: | ||
node_webserver: | node_webserver: | ||
#Container name, --name | #Container name, --name | ||
container_name: | container_name: example5 | ||
#Used image | #Used image | ||
image: example5:1.0 | image: example5:1.0 | ||
| Zeile 97: | Zeile 99: | ||
Das Volume wird automatisch erstellt und bleibt auch nach {{BSL|docker compose down}} erhalten. | Das Volume wird automatisch erstellt und bleibt auch nach {{BSL|docker compose down}} erhalten. | ||
=== Beispiel | === Beispiel 4) Node Webserver (building Image) === | ||
Inhalt '''Dockerfile''' | Inhalt '''Dockerfile''' | ||
Siehe [[Docker_2024_04/Containers#Dockerfile|hier]] | |||
Inhalt '''docker-compose.yml''' | Inhalt '''docker-compose.yml''' | ||
| Zeile 121: | Zeile 124: | ||
www: | www: | ||
}} | }} | ||
Löschen des bestehenden Images: | |||
{{BML|code=docker image example5:1.0}} | |||
Das starten des Services erstellt automatisch das Image bzw. die Images: | |||
{{BML|code=docker compose up -d}} | |||
Das oder die Images können auch explizit gebaut werden: | |||
{{BML|code=docker compose build}} | |||
=== Beispiel 5) Networking === | |||
Beispiel siehe [[Docker_2024_04/Networking#Beispiel_4):_Komplexeres_Beispiel|hier]] | |||
Inhalt '''Dockerfile''' | |||
Siehe [[Docker_2024_04/Networking#Dockerfile|hier]] | |||
Folgend werden '''Bridge''' Netzwerke verwendet. Es können verschiedene Treiber angegeben werden, siehe [https://docs.docker.com/compose/networking/ hier]<ref>https://docs.docker.com/compose/networking/</ref> | |||
Das '''Host Network''' kann über den Parameter {{BSL|network_mode: host}} verwendet werden. | |||
Inhalt '''docker-compose.yml''' | |||
{{BML|code= | |||
services: | |||
app: | |||
container_name: app | |||
hostname: app | |||
build: | |||
context: . | |||
image: networking_example2:1.0 | |||
#Use networks | |||
networks: | |||
- tier1 | |||
- tier2 | |||
#Depends on database | |||
depends_on: | |||
- db | |||
db: | |||
container_name: database | |||
hostname: db | |||
image: networking_example2:1.0 | |||
networks: | |||
- tier2 | |||
reverseproxy: | |||
container_name: reverseproxy | |||
hostname: reverseproxy | |||
image: networking_example2:1.0 | |||
networks: | |||
- tier1 | |||
depends_on: | |||
- app | |||
networks: | |||
tier1: | |||
tier2: | |||
}} | |||
Services starten: | |||
{{BML|code=docker compose up -d}} | |||
Die Netzwerk funktionalität kann wie [[Docker_2024_04/Networking#Beispiel_4):_Komplexeres_Beispiel|hier]] bereits erläutert wurde, getestet werden. | |||
=== Beispiel 6) Restarting === | |||
Wird die im Service gestartete Anwendung beendet, so kann definiert werden ob der Service neu gestartet werden soll. Weiter Informationen finden sich [https://www.baeldung.com/ops/docker-compose-restart-policies hier]<ref>https://www.baeldung.com/ops/docker-compose-restart-policies</ref> | |||
Folgendes Kommando bietet sich für ein eigenes Terminal an {{BSL|watch -n 0.1 -c "docker ps -a"}} um den Container Status zu überwachen. | |||
Inhalt '''docker-compose.yml''' | |||
{{BML|code= | |||
services: | |||
ubuntu: | |||
container_name: ubuntu | |||
image: ubuntu:22.04 | |||
command: ["bash"] | |||
stdin_open: true | |||
tty: true | |||
}} | |||
Service '''detached''' starten: | |||
{{BML|code= | |||
docker compose up -d | |||
}} | |||
Mit Service verbinden und schließen | |||
{{BML|code= | |||
docker attach ubuntu | |||
exit | |||
}} | |||
Der Service wurde beendet und ist im '''Exited State'''. | |||
Inhalt '''docker-compose.yml''' | |||
{{BML|code= | |||
services: | |||
ubuntu: | |||
#Container always restarts after application terminates | |||
restart: always | |||
container_name: ubuntu | |||
image: ubuntu:22.04 | |||
command: ["bash"] | |||
stdin_open: true | |||
tty: true | |||
}} | |||
Service '''detached''' starten: | |||
{{BML|code= | |||
docker compose up -d | |||
}} | |||
Mit Service verbinden und schließen | |||
{{BML|code= | |||
docker attach ubuntu | |||
exit | |||
}} | |||
Der Service wurde beendet und ist im '''Exited State''', wird jedoch neu gestartet. | |||
Aktuelle Version vom 19. April 2024, 05:46 Uhr
Docker Compose bietet eine komfortable Möglichkeit Images zu bauen und Container bzw. Container im Serviceverbund zu starten. Die Erstellung von Volumes und Networks wird stark erleichtert. Zudem muss der oft Komplexe docker run Befehl nicht abgelegt werden.
Im folgenden werden einige der zuvor erstellten Beispiele mit Docker Compose nachgebaut.
Der Standard Name für Docker Compose Dateien ist docker-compose.yml. Mit dem Parameter-fkann jedoch direkt eine Docker Compose Datei angegeben werden. Z.b.:docker-compose -f service1.yml
Beispiel 1) Erster Container
Beispiel siehe hier
Inhalt docker-compose.yml
services:
#Service name
ubuntu:
#Container name, --name
container_name: ubuntu
#Used image
image: ubuntu:22.04
#Command to run
command: ["bash"]
#Parameter -it
stdin_open: true
tty: true
Service detached starten:
docker compose up -d
Mit Service verbinden und schließen
docker attach ubuntu
exit
Der Container ist nun im Exited State docker ps -a. Der Container wird mit folgendem Kommando korrekt gelöscht, bzw. auch gestoppt sofern dieser gestartet ist. Es werden so ebenfalls alle erstellten Netzwerke gelöscht. Wird Docker Compose verwendet so wird nicht Standardmäßig das bridge Netzwerk bridge verwendet.
docker compose down
Beispiel 2) Node Webserver (bestehendes Image, Folder Mount)
Siehe hier
Inhalt docker-compose.yml
services:
#Service name
node_webserver:
#Container name, --name
container_name: example5
#Used image
image: example5:1.0
#Folder/Volume mount -v
volumes:
- ./http:/var/www
ports:
- 8000:5000
Service starten
docker compose up -d
Logs einsehen
docker compose logs [service name optional]
Ressourcen einsehen
docker compose stats [service name optional]
Informationen einsehen
docker compose ps [service name optional]
Webserver testen http://localhost:8000
Service beenden
docker compose down
Beispiel 3) Node Webserver (existing Image, Volume Mount)
Beispiel siehe hier
Inhalt docker-compose.yml
services:
#Service name
node_webserver:
#Container name, --name
container_name: example5
#Used image
image: example5:1.0
#Folder/Volume mount -v
volumes:
- www:/var/www
ports:
- 8000:5000
volumes:
www:
Das Volume wird automatisch erstellt und bleibt auch nach docker compose down erhalten.
Beispiel 4) Node Webserver (building Image)
Inhalt Dockerfile
Siehe hier
Inhalt docker-compose.yml
services:
#Service name
node_webserver:
#Container name, --name
container_name: node_webserver
#Build image
build:
context: .
image: example5:1.0
#Folder/Volume mount -v
volumes:
- www:/var/www
ports:
- 8000:5000
volumes:
www:
Löschen des bestehenden Images:
docker image example5:1.0
Das starten des Services erstellt automatisch das Image bzw. die Images:
docker compose up -d
Das oder die Images können auch explizit gebaut werden:
docker compose build
Beispiel 5) Networking
Beispiel siehe hier
Inhalt Dockerfile
Siehe hier
Folgend werden Bridge Netzwerke verwendet. Es können verschiedene Treiber angegeben werden, siehe hier[1]
Das Host Network kann über den Parameter network_mode: host verwendet werden.
Inhalt docker-compose.yml
services:
app:
container_name: app
hostname: app
build:
context: .
image: networking_example2:1.0
#Use networks
networks:
- tier1
- tier2
#Depends on database
depends_on:
- db
db:
container_name: database
hostname: db
image: networking_example2:1.0
networks:
- tier2
reverseproxy:
container_name: reverseproxy
hostname: reverseproxy
image: networking_example2:1.0
networks:
- tier1
depends_on:
- app
networks:
tier1:
tier2:
Services starten:
docker compose up -d
Die Netzwerk funktionalität kann wie hier bereits erläutert wurde, getestet werden.
Beispiel 6) Restarting
Wird die im Service gestartete Anwendung beendet, so kann definiert werden ob der Service neu gestartet werden soll. Weiter Informationen finden sich hier[2]
Folgendes Kommando bietet sich für ein eigenes Terminal an watch -n 0.1 -c "docker ps -a" um den Container Status zu überwachen.
Inhalt docker-compose.yml
services:
ubuntu:
container_name: ubuntu
image: ubuntu:22.04
command: ["bash"]
stdin_open: true
tty: true
Service detached starten:
docker compose up -d
Mit Service verbinden und schließen
docker attach ubuntu
exit
Der Service wurde beendet und ist im Exited State.
Inhalt docker-compose.yml
services:
ubuntu:
#Container always restarts after application terminates
restart: always
container_name: ubuntu
image: ubuntu:22.04
command: ["bash"]
stdin_open: true
tty: true
Service detached starten:
docker compose up -d
Mit Service verbinden und schließen
docker attach ubuntu
exit
Der Service wurde beendet und ist im Exited State, wird jedoch neu gestartet.