23 Docker-Netzwerke: Bridge, Host und Overlay Netzwerke

23.1 Einführung

Docker bietet mehrere Netzwerkoptionen, um Container miteinander und mit der Außenwelt zu verbinden. Die drei häufigsten Netzwerktypen sind Bridge, Host und Overlay Netzwerke. In diesem Kapitel werden die verschiedenen Netzwerktypen sowie deren Erstellung und Verwaltung beschrieben.

23.2 Bridge-Netzwerke

Bridge-Netzwerke sind die Standardnetzwerke, die Docker erstellt. Sie ermöglichen Containern auf demselben Host, miteinander zu kommunizieren.

23.2.1 Erstellung eines Bridge-Netzwerks

Befehl:

docker network create my-bridge-network

Ausgabe:

f2b5e3ac9e1f715e34f6cfb0d1f927b8ed1e8ff79f0c82a70e7c4f8c5f4db8a3

23.2.2 Verbinden eines Containers mit einem Bridge-Netzwerk

Befehl:

docker run -d --name my-container --network my-bridge-network nginx

Ausgabe:

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
...
Digest: sha256:bf1a7e4a99c78f6d78024a5f8db3d2b4a09c9f6268e8c6b7d1f9820d1f1a34a6
Status: Downloaded newer image for nginx:latest
a3b74fbdcb98b11f823eb6764f5bcd8e92a1d15bde5c6852e47a7bc0a27c3d49

23.2.3 Überprüfen des Netzwerks

Befehl:

docker network inspect my-bridge-network

Ausgabe:

[
    {
        "Name": "my-bridge-network",
        "Id": "f2b5e3ac9e1f715e34f6cfb0d1f927b8ed1e8ff79f0c82a70e7c4f8c5f4db8a3",
        "Created": "2024-07-05T10:20:19.823Z",
        "Scope": "local",
        "Driver": "bridge",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "172.18.0.0/16",
                    "Gateway": "172.18.0.1"
                }
            ]
        },
        ...
    }
]

23.3 Host-Netzwerke

Host-Netzwerke teilen die Netzwerkumgebung des Hosts mit den Containern. Dies bedeutet, dass der Container direkten Zugriff auf die Netzwerk-Schnittstellen des Hosts hat.

23.3.1 Erstellung und Nutzung eines Host-Netzwerks

Befehl:

docker run -d --network host nginx

Ausgabe:

Unable to find image 'nginx:latest' locally
latest: Pulling from library/nginx
...
Digest: sha256:bf1a7e4a99c78f6d78024a5f8db3d2b4a09c9f6268e8c6b7d1f9820d1f1a34a6
Status: Downloaded newer image for nginx:latest
a3b74fbdcb98b11f823eb6764f5bcd8e92a1d15bde5c6852e47a7bc0a27c3d49

23.3.2 Überprüfen des Host-Netzwerks

Befehl:

docker network inspect host

Ausgabe:

[
    {
        "Name": "host",
        "Id": "9deff05f7e63bfa15ff8c4d7b5f4ff6236745d273f8e7efec9c1f127b5f8a3e6",
        "Created": "2024-07-05T10:25:24.123Z",
        "Scope": "local",
        "Driver": "host",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": []
        },
        ...
    }
]

23.4 Overlay-Netzwerke

Overlay-Netzwerke ermöglichen die Kommunikation zwischen Containern, die auf verschiedenen Hosts laufen. Sie sind besonders nützlich für verteilte Anwendungen und Docker-Swarm-Umgebungen.

23.4.1 Erstellung eines Overlay-Netzwerks

Voraussetzung: Ein Docker-Swarm muss initiiert werden.

Befehl zur Initiierung eines Docker-Swarms:

docker swarm init

Befehl zur Erstellung eines Overlay-Netzwerks:

docker network create -d overlay my-overlay-network

Ausgabe:

3b7f8b6a1d2c9e5b3f8c4d8e7a4f5f2c9b6e1d8c9f4f7c2d3a4b5c6f7d8e9f4c

23.4.2 Verbinden eines Containers mit einem Overlay-Netzwerk

Befehl:

docker service create --name my-service --network my-overlay-network nginx

Ausgabe:

my-service
overall progress: 1 out of 1 tasks
1/1: running

23.4.3 Überprüfen des Overlay-Netzwerks

Befehl:

docker network inspect my-overlay-network

Ausgabe:

[
    {
        "Name": "my-overlay-network",
        "Id": "3b7f8b6a1d2c9e5b3f8c4d8e7a4f5f2c9b6e1d8c9f4f7c2d3a4b5c6f7d8e9f4c",
        "Created": "2024-07-05T10:30:30.125Z",
        "Scope": "swarm",
        "Driver": "overlay",
        "EnableIPv6": false,
        "IPAM": {
            "Driver": "default",
            "Options": null,
            "Config": [
                {
                    "Subnet": "10.0.0.0/24"
                }
            ]
        },
        ...
    }
]

23.5 Zusammenfassung der Netzwerktypen

Die Verwaltung von Docker-Netzwerken ist entscheidend für den effektiven Einsatz von Containern in verschiedenen Szenarien, sei es auf einem einzelnen Host oder in verteilten Systemen. Durch die Wahl des passenden Netzwerktyps können Sie sicherstellen, dass Ihre Container effizient und sicher kommunizieren.