English English French French Spanish Spanish German German
Geekflare wird von unserem Publikum unterstützt. Wir können Affiliate-Provisionen durch den Kauf von Links auf dieser Website verdienen.
Teilen:

Docker-Netzwerk 101

Docker-Netzwerk
Invicti Web Application Security Scanner – die einzige Lösung, die eine automatische Verifizierung von Schwachstellen mit Proof-Based Scanning™ bietet.

Lernen wir Docker Networking….

Docker enthält hauptsächlich fünf Netzwerke: Bridge, Host, Overlay, None und Macvlan.

Das Brückennetzwerk ist das Standardnetzwerk im Docker. Eine Einführung in diese Netzwerke wurde in meinem vorherigen Artikel über gegeben Docker-Architektur.

In diesem Artikel zeige ich Ihnen den praktischen Teil der Docker-Vernetzung. Sie erfahren, wie Sie die Details Ihres Docker-Netzwerks überprüfen, eine Verbindung zu einem Netzwerk herstellen, Ihr Netzwerk erstellen und vieles mehr. Also lasst uns anfangen.

Immer wenn Sie einen Docker-Container ausführen, wird ein Standard-Bridge-Netzwerkaufruf ausgeführt docker0 wird dem Container zugeordnet, sofern kein anderes Netzwerk angegeben ist. Zum Beispiel, wenn ich renne ifconfig Befehl erhalten Sie die Details des Docker0-Netzwerks vom Brückentyp zusammen mit anderen Netzwerkdetails.

osboxes@worker2:~$ ifconfig

docker0: flags=4099<UP,BROADCAST,MULTICAST>  mtu 1500

inet 172.17.0.1  netmask 255.255.0.0  broadcast 172.17.255.255

ether 02:42:f6:59:4a:5f  txqueuelen 0  (Ethernet)

RX packets 0  bytes 0 (0.0 B)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 0  bytes 0 (0.0 B)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


enp0s3: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 10.0.2.15  netmask 255.255.255.0  broadcast 10.0.2.255

inet6 fe80::763e:c0b4:14df:b273  prefixlen 64  scopeid 0x20<link>

ether 08:00:27:68:64:9a  txqueuelen 1000  (Ethernet)

RX packets 2157  bytes 2132896 (2.1 MB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 952  bytes 151610 (151.6 KB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


enp0s8: flags=4163<UP,BROADCAST,RUNNING,MULTICAST>  mtu 1500

inet 192.168.56.102  netmask 255.255.255.0  broadcast 192.168.56.255

inet6 fe80::20a:6c57:839d:2652  prefixlen 64  scopeid 0x20<link>

ether 08:00:27:53:45:82  txqueuelen 1000  (Ethernet)

RX packets 10597  bytes 1497146 (1.4 MB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 12058  bytes 1730219 (1.7 MB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0


lo: flags=73<UP,LOOPBACK,RUNNING>  mtu 65536

inet 127.0.0.1  netmask 255.0.0.0

inet6 ::1  prefixlen 128  scopeid 0x10<host>

loop  txqueuelen 1000  (Local Loopback)

RX packets 1196  bytes 105396 (105.3 KB)

RX errors 0  dropped 0  overruns 0  frame 0

TX packets 1196  bytes 105396 (105.3 KB)

TX errors 0  dropped 0 overruns 0  carrier 0  collisions 0

Listing Network

Führen Sie die ls Befehl zum Überprüfen aller auf dem aktuellen Host ausgeführten Netzwerke. Sie können sehen, dass derzeit sieben Netzwerke vorhanden sind, einschließlich Bridge, Host und keines, die bei der Installation von Docker automatisch erstellt werden. Abhängig von den Containern, die ich in der Vergangenheit ausgeführt habe, gibt es auch Details zu anderen benutzerdefinierten Netzwerken.

geekflare@geekflare:~$ docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

fec751a6ae21        bridge              bridge              local

21943b20735d        docker_gwbridge     bridge              local

f51d1f3379e0        host                host                local

ppp8i7tvrxa0        ingress             overlay             swarm

ba68f73abeed        mean-app_default    bridge              local

d466e75d86fa        mean_default        bridge              local

5e5d9a192c00        none                null                local

Inspecting Network

Du kannst rennen inspect Befehl, um alle Details zu einem Netzwerktyp abzurufen. Es enthält Informationen zum Netzwerk, einschließlich Name, ID, Erstellungszeit, Umfang, Treiber, Konfigurationsdetails wie Subnetz und Gateway-Adresse. Ich werde auch Containerdetails angeben, wenn ein Container in Betrieb ist. Andernfalls wird eine leere Zeichenfolge zurückgegeben.

geekflare@geekflare:~$ docker network inspect bridge

[

{

"Name": "bridge",

"Id": "fec751a6ae21f20a06cdc6eb823e773caec063b6bf9a388016594e59fd1db475",

"Created": "2019-08-01T10:30:27.595054009-04:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": null,

"Config": [

{

"Subnet": "172.17.0.0/16",

"Gateway": "172.17.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {},

"Options": {

"com.docker.network.bridge.default_bridge": "true",

"com.docker.network.bridge.enable_icc": "true",

"com.docker.network.bridge.enable_ip_masquerade": "true",

"com.docker.network.bridge.host_binding_ipv4": "0.0.0.0",

"com.docker.network.bridge.name": "docker0",

"com.docker.network.driver.mtu": "1500"

},

"Labels": {}

}

]

Create Network

Die create Befehl können Sie Ihr eigenes Netzwerk erstellen. Sie müssen den Treibertyp mit angeben --driver flag, im folgenden Beispiel verwende ich den Brückentyp.

geekflare@geekflare:~$ docker network create --driver bridge geekflare_network

08e0da91f6de6c640b1b6f8a8602973f310b8ee9b04961389b7dfda842ccc409

Führen Sie den Befehl ls aus, um zu überprüfen, ob das Netzwerk erstellt wurde.

geekflare@geekflare:~$ docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

fec751a6ae21        bridge              bridge              local

21943b20735d        docker_gwbridge     bridge              local

08e0da91f6de        geekflare_network   bridge              local

f51d1f3379e0        host                host                local

ppp8i7tvrxa0        ingress             overlay             swarm

ba68f73abeed        mean-app_default    bridge              local

d466e75d86fa        mean_default        bridge              local

5e5d9a192c00        none                null                local

Jetzt werde ich einen Docker-Container in dem von mir erstellten Netzwerk ausführen. Ich führe einen einfachen Apache-Server-Container im folgenden Befehl aus.

geekflare@geekflare:~$ docker run -it -d --network=geekflare_network httpd

38a0b0646da1a0045afcf7aa0cd6228b851f74107a6718bb19d599e896df1002

Ausführen des Befehls inspect, um alle Informationen von zu überprüfen geekflare_network. Die Containerdetails finden Sie diesmal in dieser Ausgabe. Der Containername lautet bestimmt_dubinsky.

geekflare@geekflare:~$ docker network inspect geekflare_network

[

{

"Name": "geekflare_network",

"Id": "08e0da91f6de6c640b1b6f8a8602973f310b8ee9b04961389b7dfda842ccc409",

"Created": "2019-09-03T13:56:36.244295204-04:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": {},

"Config": [

{

"Subnet": "172.21.0.0/16",

"Gateway": "172.21.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {

"38a0b0646da1a0045afcf7aa0cd6228b851f74107a6718bb19d599e896df1002": {

"Name": "determined_dubinsky",

"EndpointID": "30d252720e0f381ba01d6f5414525dff8587abcf3c4920100f112898a52c8a23",

"MacAddress": "02:42:ac:15:00:02",

"IPv4Address": "172.21.0.2/16",

"IPv6Address": ""

}

},

"Options": {},

"Labels": {}

}

]

Disconnect Network

Zu disconnect Führen Sie im folgenden Container den folgenden Befehl aus, um das Netzwerk zu öffnen. Sie müssen den Netzwerknamen und den Containernamen im Befehl zum Trennen angeben.

geekflare@geekflare:~$ docker network disconnect geekflare_network determined_dubinsky

In diesem Netzwerk wird der Container Determined_Dubinsky nicht mehr ausgeführt. Das Containerfeld ist leer.

geekflare@geekflare:~$ docker network inspect geekflare_network

[

{

"Name": "geekflare_network",

"Id": "08e0da91f6de6c640b1b6f8a8602973f310b8ee9b04961389b7dfda842ccc409",

"Created": "2019-09-03T13:56:36.244295204-04:00",

"Scope": "local",

"Driver": "bridge",

"EnableIPv6": false,

"IPAM": {

"Driver": "default",

"Options": {},

"Config": [

{

"Subnet": "172.21.0.0/16",

"Gateway": "172.21.0.1"

}

]

},

"Internal": false,

"Attachable": false,

"Ingress": false,

"ConfigFrom": {

"Network": ""

},

"ConfigOnly": false,

"Containers": {},

"Options": {},

"Labels": {}

}

]

Um ein anderes Netzwerk als das Bridge-Netzwerk zu erstellen, müssen Sie einen anderen Treibernamen als Bridge angeben. So erstellen Sie eine overlay Netzwerk, führen Sie den folgenden Befehl aus.

geekflare@manager1:~$ docker network create --driver overlay  geekflare_network_2

ynd2858eu1cngwhpc40m3h1nx

geekflare@manager1:~$ docker network ls

NETWORK ID          NAME                DRIVER              SCOPE

fec751a6ae21        bridge              bridge              local

21943b20735d        docker_gwbridge     bridge              local

08e0da91f6de        geekflare_network   bridge              local

f51d1f3379e0        host                host                local

ppp8i7tvrxa0        ingress             overlay             swarm

ba68f73abeed        mean-app_default    bridge              local

d466e75d86fa        mean_default        bridge              local

5e5d9a192c00        none                null                local

ynd2858eu1cn        geekflare_network_2   overlay             swarm

So erstellen Sie ein host Netzwerk, Host mit –driver Flag erwähnen. Das folgende Beispiel gibt einen Fehler zurück, da nur eine Host-Netzwerkinstanz zulässig ist, die bereits zuvor ausgeführt wurde. Dieser Befehl erstellt also kein weiteres Host-Netzwerk.

geekflare@manager1:~$ docker network create --driver host  geekflare_network_3

Error response from daemon: only one instance of "host" network is allowed

Fazit

Hier ging es um Docker-Netzwerke und darum, wie Sie Docker-Netzwerke verbinden, trennen, erstellen und überprüfen können. Probieren Sie diese Befehle aus, um sich mit dem Docket-Netzwerk vertraut zu machen. Wenn Sie neugierig auf das Erlernen von Net Devops sind, lesen Sie dies Udemy natürlich.

Danke an unsere Sponsoren
Weitere großartige Lektüre zu DevOps
Macht Ihr Geschäft
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Invicti verwendet das Proof-Based Scanning™, um die identifizierten Schwachstellen automatisch zu verifizieren und innerhalb weniger Stunden umsetzbare Ergebnisse zu generieren.
    Versuchen Sie es mit Invicti
  • Web-Scraping, Wohn-Proxy, Proxy-Manager, Web-Unlocker, Suchmaschinen-Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie es mit Brightdata
  • Semrush ist eine All-in-One-Lösung für digitales Marketing mit mehr als 50 Tools in den Bereichen SEO, Social Media und Content-Marketing.
    Versuchen Sie es mit Semrush
  • Intruder ist ein Online-Schwachstellenscanner, der Cyber-Sicherheitslücken in Ihrer Infrastruktur findet, um kostspielige Datenschutzverletzungen zu vermeiden.
    MIT DER INTELLIGENTEN SCHADENKALKULATION VON Intruder