Die Portweiterleitung in Docker ist ein Prozess, der es uns ermöglicht, den Container-Port auf dem Docker-Hostsystem verfügbar zu machen. Es ermöglicht uns, die Anwendung in einer isolierten Umgebung auszuführen und sie auch von außerhalb des Containers auf einem Benutzercomputer zugänglich zu machen.
Dieser Beitrag zeigt:
- So leiten Sie den Port in Docker mit dem Tag „-p“ oder „–publish“ weiter
- So leiten Sie den Port in Docker mit Docker Compose weiter
- So leiten Sie einen Port an ein bestimmtes Netzwerk weiter
- Abschluss
So leiten Sie den Port in Docker mit dem Tag „-p“ oder „–publish“ weiter
Um einen Port in Docker weiterzuleiten, muss der Benutzer den Container-Port auf dem Docker-Host veröffentlichen. Führen Sie dazu den Container auf dem Docker-Host aus mit dem Befehl „ -P ' oder ' -veröffentlichen ”-Tag im „ Docker-Lauf ' Befehl.
Befolgen Sie für eine ordnungsgemäße Demonstration die folgenden Anweisungen.
Schritt 1: Dockerfile erstellen
Erstellen Sie zunächst eine Datei und geben Sie als Namen „ Docker-Datei “. Diese Datei enthält die Textanweisungen zum Erstellen der Vorlage des Docker-Containers. Lassen Sie uns zum Beispiel das einfache Golang-Programm mit dem folgenden Snippet in der Docker-Datei andocken:
VON golang: 1.8
ARBEITSVERZEICHNIS / gehen / src / App
KOPIEREN main2.go .
LAUF, geh bauen -Ö Webserver.
EXPONIEREN 8080
CMD [ './webserver' ]
Im angegebenen Ausschnitt:
- „ AUS Der Befehl „wird verwendet, um das Basisbild festzulegen.
- „ ARBEITSVERZEICHNIS „definiert das Arbeitsverzeichnis des Containers.
- „ KOPIEREN Der Befehl „erstellt eine Kopie der Programmdatei im vom Container angegebenen Pfad.
- „ LAUFEN Der Befehl „Führt den angegebenen Befehl im Container aus.
- „ EXPONIEREN Der Befehl gibt den Port an, an dem der Container abgehört wird.
- „ CMD ” gibt die ausführbaren Punkte des Containers an.
Schritt 2: Erstellen Sie ein Golang-Programm
Als nächstes erstellen Sie eine weitere Datei mit dem Namen „ main2.go ” und fügen Sie das unten bereitgestellte Golang-Programm ein, das eine einfache Zeichenfolge auf Port druckt „ 8080 ”:
Paket main
importieren (
„fmt“
'Protokoll'
„net/http“
)
Funktionshandler ( In http.ResponseWriter, r * http.Anfrage ) {
html := `
DOCTYPE html >
< html >
< Kopf >
< Titel > Hallo Golang ! Titel >
< Stil >
Körper {
Hintergrundfarbe: #D2B48C;
}
.Container {
Textausrichtung: Mitte;
Polsterung: 50px;
}
Stil >
Kopf >
< Körper >
< div Klasse = 'Container' >
< h1 > Hallo ! Willkommen beim LinuxHint-Tutorial h1 >
div >
Körper >
html >`
w.Header ( ) .Satz ( 'Inhaltstyp' , „text/html“ )
fmt.Fprint ( In , html )
}
Funktion main ( ) {
http.HandleFunc ( „/“ , Handler )
log.Fatal ( http.ListenAndServe ( „0.0.0.0:8080“ , null ) )
}
Schritt 3: Container-Snapshot erstellen
Generieren Sie nun einen Snapshot für den Container aus der oben angegebenen Docker-Datei. Navigieren Sie dazu zunächst mit dem Befehl „ in das Verzeichnis, in dem die Docker-Datei erstellt wird. cd
Als nächstes generieren Sie das neue Container-Image mit dem angegebenen Befehl:
Docker-Build -T golang-img .
Das angegebene Ergebnis zeigt, dass das Image gemäß dem bereitgestellten Build-Kontext erstellt wird.
Schritt 4: Host-Port an Container-Port weiterleiten
Führen Sie nun den Container aus und leiten Sie den Host-Port an den Container-Port weiter, um außerhalb des Containers auf einem lokalen Computer auf die Dockerize-App zuzugreifen. Führen Sie dazu die aus „docker run –name
Hier das ' -P Das Flag „“ wird verwendet, um den Container-Ausführungsport auf dem Docker-Host zu veröffentlichen:
Schritt 5: Verifizierung
Sehen Sie sich zur Überprüfung die laufenden Container an, indem Sie „ Docker PS ”:
Docker PSIm folgenden Ergebnis überwacht die Containeranwendung verfügbare Netzwerkschnittstellen. 0.0.0.0 „auf veröffentlichtem Port“ 8080 “. Dies bedeutet, dass der Port an die laufende Anwendung auf dem Host-Computer weitergeleitet wird:
Starten Sie nun den Browser und navigieren Sie zu „ http://localhost:8080/ ” und überprüfen Sie, ob die Portweiterleitungstechnik angewendet wird oder nicht und ob auf die Containeranwendung außerhalb des Containers auf dem Hostsystem zugegriffen werden kann:
Hier haben wir den Host-Port erfolgreich an den Container-Port weitergeleitet und die Anwendung ist auf dem Docker-Host zugänglich.
So leiten Sie den Port in Docker mit Docker Compose weiter
Um den Container-Port an den Host weiterzuleiten, um von außerhalb des Containers auf die Container-Anwendung zuzugreifen, kann der Benutzer die Option „ Hafen ” Geben Sie die Compose-Yaml-Datei ein. Docker Compose ist ein Docker-Dienst, der es uns ermöglicht, verschiedene Dienste und Anwendungen in verschiedenen Containern auszuführen. Verwendung der ' docker-compose.yml ”-Datei kann der Benutzer den Container-Port auch an den Host-Computer weiterleiten und eine Anwendungsverbindung zur Außenwelt herstellen.
Schauen Sie sich das folgende Verfahren zur Veranschaulichung an.
Schritt 1: Erstellen Sie eine Compose-Datei
Erstellen Sie zunächst eine Datei mit dem Namen „ docker-compose.yml ”-Datei und fügen Sie der Datei den folgenden Inhalt hinzu:
Ausführung: '3'Dienstleistungen:
Netz:
bauen: .
Häfen:
- 8080 : 8080
Im obigen Ausschnitt ist das „ Häfen Der Schlüssel „“ wird verwendet, um den Host mit dem Container-Port zu verbinden. Hier ist der erste Wert der Host-Port und der zweite Wert der Container-Port.
Schritt 2: App starten
Nachdem Sie die Anweisungen in der Erstellungsdatei angegeben haben, starten Sie die Anwendung in einem Container mit dem Befehl „ Docker-Komponieren ' Befehl:
Docker-Komponieren
Schritt 3: Verifizierung
Listen Sie zur Überprüfung die Compose-Container mit dem Befehl „ auf. Docker-Compose ps ' Befehl:
Docker-Compose PS -A
Um zu überprüfen, ob der Container auf dem Host-Computer zugänglich ist, navigieren Sie zu „ http://localhost:8080/ ” URL. Hier können Sie sehen, dass wir den Container-Port effektiv auf den Host weitergeleitet haben:
So leiten Sie den Port an ein bestimmtes Netzwerk weiter
Um einen Container-Port an ein bestimmtes Netzwerk weiterzuleiten, muss der Benutzer das Netzwerk angeben, in dem er auf den Container zugreifen möchte, indem er „ -Netzwerk ' Möglichkeit. Schauen Sie sich zur Demonstration die angegebenen Schritte an.
Schritt 1: Erstellen Sie ein Netzwerk
Erstellen Sie ein neues Netzwerk mit „ Docker-Netzwerk erstellen
Um die Docker-Netzwerke anzuzeigen, verwenden Sie „ Docker-Netzwerk ls ' Befehl:
Docker-Netzwerk lsHier haben wir erfolgreich „ mygo-netzwerk ” das ist die Verwendung von „ Brücke ” Fahrer:
Schritt 2: Netzwerk zuordnen
Um den Container mithilfe der Portweiterleitungstechnik in einem bestimmten Netzwerk auszuführen und darauf zuzugreifen, verwenden Sie den folgenden Befehl:
Docker-Lauf -P 8080 : 8080 --Netzwerk mygo-network golang-imgIm gegebenen Befehl ist das „ -P Die Option „veröffentlicht den Container auf einem angegebenen Port des angegebenen Netzwerks. Hier das ' -Netzwerk Die Option „wird verwendet, um das Docker-Netzwerk zu definieren:
Navigieren Sie zur Überprüfung erneut zu „ http://localhost:8080 ”-Port und prüfen Sie, ob der Container im angegebenen Netzwerk erreichbar ist oder nicht:
Die obige Ausgabe zeigt an, dass wir den Container-Port effektiv an ein bestimmtes Netzwerk weitergeleitet haben.
Notiz: Bei Verwendung des „Host“-Netzwerks muss der Benutzer den Port nicht vom Container zum Host veröffentlichen, indem er „ -P ' oder ' -veröffentlichen ' Möglichkeit.
Leiten Sie den Port mithilfe von Docker Compose an ein bestimmtes Netzwerk weiter
Fügen Sie den folgenden Ausschnitt in „ docker-compose.yml ' Datei. Im folgenden Snippet ist das „ Netzwerke Mit der Taste „“ wird das Netzwerk angegeben:
Ausführung: '3'Dienstleistungen:
Netz:
bauen: .
Häfen:
- 8080 : 8080
Starten Sie nun die Anwendung in einem Container mit dem Befehl „ Docker-Komponieren ' Befehl:
Docker-Komponieren
Wir haben die Methoden zur Portweiterleitung in Docker behandelt.
Abschluss
Um den Port in Docker für den Zugriff auf die Dockerize-Anwendung außerhalb des Containers weiterzuleiten, kann der Benutzer entweder die „ -P ' oder ' -veröffentlichen ”-Option in der „ Docker-Lauf ”-Befehl oder der Benutzer kann den „ Häfen Geben Sie die Docker-Compose-Datei ein. Um auf den Container in einem bestimmten Netzwerk zuzugreifen, kann der Benutzer den Container-Port in einem Netzwerk weiterleiten, indem er „ –network