Übung 7
Docker Networking und DNS
Ziel
Sie lernen, wie Docker-Netzwerke funktionieren, wie Container über ihre Namen, IDs und IP-Adressen kommunizieren können und wie die Netzwerkkonfiguration den Zugriff zwischen Containern beeinflusst.
Schritte
1. Erstelle die Docker-Images:
- Erstelle eine Datei namens Dockerfile mit folgendem Inhalt:
Dockerfile
FROM ubuntu:latest
RUN apt-get update && apt-get install -y iputils-ping \
&& rm -rf /var/lib/apt/lists/\*
CMD ["bash"]
hinweis
iputils-pingermöglicht es, im Container einen anderen Container "anzupingen".
2. Bau das Docker-Image
- Erstellen Sie aus dem Dockerfile ein Docker-Image:
docker buildx build -t my-ubuntu-image .
3. Erstelle Netzwerke
- Erstellen Sie folgende zwei Docker-Netzwerke:
docker network create mynetwork
docker network create othernetwork
4. Starte die Container
- Starten Sie zwei Container im
mynetworkund einen imothernetwork:
bash auf dem Host
docker run -itd --name container1 --network mynetwork my-ubuntu-image
docker run -itd --name container2 --network mynetwork my-ubuntu-image
docker run -itd --name container3 --network othernetwork my-ubuntu-image
hinweis
- Mit dem Parameter
-itdstarten Sie den Container interaktiv (it) im Hintergrund (d), das heisst, der Container läuft weiter (mit bash), auch wenn Sie nicht im Container sind.
5. Zugriff auf die Container
- Um innerhalb vom container1 Befehle ausführen zu können, öffnen Sie eine Shell im container1:
bash auf dem Host
docker exec -it container1 /bin/bash
6. Pingen von container2
- In der Shell von container1, führe den folgenden Befehl aus:
bash in container1
ping container2
7. Ermitteln der IP-Adresse und Container-ID von container2
- Öffnen Sie ein neues Host-Terminal (nicht in einem Container) und finden Sie die IP-Adresse mit folgendem dem Befehl:
bash auf dem Host
docker inspect container2
- Sie finden den Eintrag weit unten unter "Networks/mynetwork/IPAdress" (z.B. 172.17.0.2).
- Mit
docker pssollten Sie die Container-ID ermitteln können (z.B. ef20d820ae81).
8. Pingen von container2 über die Container-ID und IP-Adresse
Gehen Sie zurück zu der Shell von container1 und führen Sie die folgenden Befehle aus:
bash in container1
ping <CONTAINER_ID> # via Container-ID
ping <CONTAINER_IP> # via Container-IP
8. Pingen von container3
- Versuchen Sie, container3 vom container1 Terminal aus anzupingen:
bash in container1
ping container3
- Erwartetes Ergebnis: Der Ping sollte fehlschlagen, da container3 in einem anderen Netzwerk ist.
9. Beobachtungen und Diskussion
- Diskutieren Sie mit der Nachbarin, warum der Ping zu container3 nicht funktioniert hat.
- Besprechen Sie die Bedeutung von Netzwerken in Docker und wie sie die Kommunikation zwischen Containern beeinflussen.
10. Container stoppen und entfernen:
- Nachdem die Übung abgeschlossen ist, können Sie die Container stoppen und entfernen:
docker stop container1 container2 container3
docker rm container1 container2 container3
docker network rm mynetwork othernetwork