Geekflare wird von unserem Publikum unterstützt. Es kann sein, dass wir durch den Kauf von Links auf dieser Seite Affiliate-Provisionen verdienen.
Unter DevOps Zuletzt aktualisiert: September 24, 2023
Weitergeben:
Freshdesk - Die benutzerfreundliche Software für den Kundensupport, die Ihnen hilft, Ihre Kunden zufrieden zu stellen.

Anzeigen und Verwalten von Netzwerkverbindungen, die von einem Docker-Container hergestellt werden.

Bei der Arbeit mit einem Docker-Container müssen wir uns oft die Netzwerkverbindungen ansehen, die der Container für die anfängliche Fehlersuche oder -behebung verwendet. Vielleicht möchten Sie sehen, welche IP-Adresse einen Port abhört oder wie viele Verbindungen derzeit im Container aktiv sind.

Da es sich bei Docker um eine isolierte Umgebung handelt, erhalten Sie mit netstat auf einem Server keine Informationen über die Netzwerkverbindungen des Containers. Stattdessen müssen Sie sich entweder in den Container begeben, um netstat auszuführen, oder es aus der Ferne starten.

Schauen wir uns beide Möglichkeiten an…

# 1. In den Docker-Container eindringen, um netstat auszuführen

Als ersten Schritt suchen Sie die Container-ID des Containers, den Sie untersuchen möchten.

$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
0ce7cfb9be37 nginx "/docker-entrypoint...." vor 2 Minuten Up 2 Minuten 0.0.0.0:80->80/tcp web-server
4ab8551671d7 nginx "/docker-entrypoint...." vor 6 Minuten Up 6 Minuten 80/tcp vigilant_ganguly
$

Hier ist der Container mit der ID 0ce7cfb9be37 derjenige, dem ich auf den Grund gehen möchte. Um eine Shell-Sitzung (Bash) dieses Containers zu erhalten, verwenden Sie:

$ docker exec -it 0ce7cfb9be37 bash

Dies sollte Sie zu einer Bash-Eingabeaufforderung innerhalb des Containers führen.

root@0ce7cfb9be37:/#

Sie können das Paket netstat installieren, um nach bestehenden Netzwerkverbindungen zu suchen. Standardmäßig sind diese Dienstprogramme innerhalb des Containers möglicherweise nicht verfügbar.

Um sie zu installieren, verwenden Sie daher:

apt update
apt install net-tools

Jetzt können wir den Befehl netstat wie gewohnt verwenden.

# netstat -an

Ausgabe:

Aktive Internetverbindungen (Server und bestehende)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Zustand
tcp 0 0.0.0.0:80 0.0.0.0:* LISTEN
tcp 0 0 172.17.0.3:80 223.233.99.46:64429 FIN_WAIT2
tcp 0 0 172.17.0.3:80 223.233.99.46:4811 ESTABLISHED
tcp 0 0 172.17.0.3:80 223.233.99.46:64430 FIN_WAIT2
tcp 0 0 172.17.0.3:80 223.233.99.46:4810 ESTABLISHED
tcp6 0 0 :::80 :::* LISTEN
Aktive UNIX-Domain-Sockets (Server und eingerichtet)
Proto RefCnt Flags Type State I-Node Path
unix 3 [ ] STREAM CONNECTED 35748
unix 3 [ ] STREAM CONNECTED 35749

Wie Sie aus der obigen Ausgabe ersehen können, werden bestehende Verbindungen mit ihren Quell- und Zieladressen aufgelistet. Um Prozesse zu sehen, die auf Ports lauschen, können Sie Folgendes verwenden:

# netstat -tulnp

Ausgabe:

Aktive Internetverbindungen (nur Server)
Proto Recv-Q Send-Q Lokale Adresse Fremde Adresse Status PID/Programmname
tcp 0 0.0.0.0:80 0.0.0.0:* LISTEN 1/nginx: master pro
tcp6 0 0 :::80 :::* LISTEN 1/nginx: master pro

# 2. Führen Sie netstat aus, ohne in den Container zu gehen

Als Erstes müssen wir die Container-ID mit dem Befehl docker ps ermitteln.

[root@relicflare-shared-services ~]# docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
e5db9a01d4a8 postgres:13.1-alpine "docker-entrypoint.s..." vor 9 Tagen Up 9 Tage 0.0.0.0:5432->5432/tcp relicflare_server_postgres
[root@relicflare-shared-services ~]#

Führen Sie dann den folgenden Docker-Befehl aus, um alle eingerichteten Verbindungen für den Container zu ermitteln.

docker exec e5db9a01d4a8 netstat |grep ESTABLISHED 

Das Ergebnis sieht dann wie folgt aus.

[root@relicflare-shared-services ~]# docker exec e5db9a01d4a8 netstat | grep ESTABLISHED
tcp 0 0 e5db9a01d4a8:postgresql 161.35.XXX.XXX:49128 ESTABLISHED 
udp 0 0 localhost:48818 localhost:48818 ESTABLISHED 
[root@relicflare-shared-services ~]# 

Die Idee ist also, den Befehl netstat zusammen mit dem Befehl docker exec auszuführen.

Schlussfolgerung

Da Sie nun die erforderlichen Verbindungsdetails haben, können Sie mit der Fehlersuche fortfahren, indem Sie sich die Docker- und Prozessprotokolle genauer ansehen.

  • Abhishek Nair
    Autor
Dank an unsere Sponsoren
Weitere großartige Lektüre über DevOps
Energie für Ihr Unternehmen
Einige der Tools und Dienste, die Ihr Unternehmen beim Wachstum unterstützen.
  • Das Text-to-Speech-Tool, das mithilfe von KI realistische, menschenähnliche Stimmen erzeugt.
    Versuchen Sie Murf AI
  • Web Scraping, Residential Proxy, Proxy Manager, Web Unlocker, Search Engine Crawler und alles, was Sie zum Sammeln von Webdaten benötigen.
    Versuchen Sie Brightdata
  • Monday.com ist ein All-in-One-Betriebssystem, mit dem Sie Projekte, Aufgaben, Arbeit, Vertrieb, CRM, Arbeitsabläufe und vieles mehr verwalten können.
    Versuch Montag
  • Intruder ist ein Online-Schwachstellen-Scanner, der Schwachstellen in Ihrer Infrastruktur aufspürt, um kostspielige Datenschutzverletzungen zu vermeiden.
    Versuchen Sie Intruder