Przekierowanie portów w Dockerze to proces, który umożliwia nam udostępnienie portu kontenera w systemie hosta Docker. Pozwala nam to uruchomić aplikację w izolowanym środowisku, a także udostępnić ją spoza kontenera na komputerze użytkownika.
Ten post pokaże:
- Jak przekierować port w oknie Docker przy użyciu znacznika „-p” lub „–publish”.
- Jak przekazać port w Dockerze za pomocą Docker Compose
- Jak przekierować port do określonej sieci
- Wniosek
Jak przekierować port w oknie Docker przy użyciu znacznika „-p” lub „–publish”.
Aby przekazać port w Dockerze, użytkownik musi opublikować port kontenera na hoście Dockera. W tym celu uruchom kontener na hoście dokującym, używając polecenia „ -P ' Lub ' -publikować ”znacznik w „ uruchomienie dokera ' Komenda.
W celu prawidłowej demonstracji postępuj zgodnie z poniższymi instrukcjami.
Krok 1: Utwórz plik Dockerfile
Najpierw utwórz plik i ustaw jego nazwę jako „ Plik Dockera ”. Ten plik zawiera instrukcje tekstowe dotyczące tworzenia szablonu kontenera Docker. Na przykład zadokujmy prosty program Golang, korzystając z poniższego fragmentu w pliku Dockerfile:
Z golanga: 1.8
KATALOG PRACY / Iść / źródło / aplikacja
KOPIUJ main2.go .
URUCHOMIJ, idź budować -O serwer internetowy .
UJAWNIĆ 8080
CMD [ './serwer internetowy' ]
W podanym fragmencie:
- „ Z ” służy do ustawiania obrazu bazowego.
- „ KATALOG PRACY ” definiuje katalog roboczy kontenera.
- „ KOPIUJ ” utworzy kopię pliku programu w ścieżce określonej przez kontener.
- „ URUCHOMIĆ ” wykona określone polecenie w kontenerze.
- „ UJAWNIĆ ” określa port, na którym kontener będzie nasłuchiwany.
- „ CMD ” określa wykonywalne punkty kontenera.
Krok 2: Utwórz program Golang
Następnie utwórz kolejny plik o nazwie „ main2.go ” i wklej poniższy program Golang, który wypisuje prosty ciąg na porcie „ 8080 ”:
pakiet główny
import (
„fm”
'dziennik'
„net/http”
)
obsługa funkcji ( w http.ResponseWriter, r * http.Żądanie ) {
HTML := `
DOCTYPEhtml >
< HTML >
< głowa >
< tytuł > Witaj Golangu ! tytuł >
< styl >
ciało {
kolor tła: #D2B48C;
}
.pojemnik {
wyrównanie tekstu: do środka;
dopełnienie: 50px;
}
styl >
głowa >
< ciało >
< div klasa = 'pojemnik' >
< h1 > Cześć ! Witamy w samouczku LinuxHint h1 >
div >
ciało >
HTML >`
w.Nagłówek ( ) .Ustawić ( 'Typ zawartości' , „tekst/html” )
fmt.Fprint ( w ,html )
}
funkcja główna ( ) {
http.HandleFunc ( „/” , opiekun )
log. Fatalny ( http.ListenAndServe ( „0.0.0.0:8080” , zero ) )
}
Krok 3: Wygeneruj migawkę kontenera
Teraz wygeneruj migawkę kontenera z określonego powyżej pliku Dockerfile. W tym celu najpierw przejdź do katalogu, w którym tworzony jest plik Dockerfile, używając przycisku „ cd <ścieżka do katalogu roboczego> ' Komenda:
Następnie wygeneruj nowy obraz kontenera za pomocą podanego polecenia:
kompilacja dokera -T golang-img .
Podany wynik pokazuje, że obraz jest tworzony zgodnie z podanym kontekstem kompilacji.
Krok 4: Przekaż port hosta do portu kontenerowego
Teraz wykonaj kontener i przekaż port hosta do portu kontenera, aby uzyskać dostęp do aplikacji dokowanej poza kontenerem na komputerze lokalnym. W tym celu uruchom „docker run –name
Tutaj ' -P ” służy do publikowania portu wykonywania kontenera na hoście dokującym:
Krok 5: Weryfikacja
W celu weryfikacji przejrzyj działające kontenery za pomocą „ okno dokowane ps ”:
doker psW poniższym wyniku skonteneryzowana aplikacja nasłuchuje na dostępnych interfejsach sieciowych „ 0.0.0.0 ” na opublikowanym porcie „ 8080 ”. Oznacza to, że port jest przekazywany do działającej aplikacji na komputerze hosta:
Teraz uruchom przeglądarkę i przejdź do „ http://localhost:8080/ ” i sprawdź, czy zastosowano technikę przekierowania portów, czy nie i czy skonteneryzowana aplikacja jest dostępna poza kontenerem w systemie hosta:
Tutaj pomyślnie przekierowaliśmy port hosta do portu kontenera, a aplikacja jest dostępna na hoście dokującym.
Jak przekazać port w Dockerze za pomocą Docker Compose
Aby przekazać port kontenera do hosta w celu uzyskania dostępu do aplikacji znajdującej się w kontenerze spoza kontenera, użytkownik może skorzystać z opcji „ Port ” w pliku YAML tworzenia. Docker Compose to usługa Docker, która umożliwia uruchamianie różnych usług i aplikacji w różnych kontenerach. Używając ' docker-compose.yml ” użytkownik może także przekazać port kontenera do komputera hosta i uzyskać połączenie aplikacji ze światem zewnętrznym.
Zapoznaj się z poniższą procedurą, aby zapoznać się z ilustracjami.
Krok 1: Utwórz plik redagowania
Najpierw wygeneruj plik o nazwie „ docker-compose.yml ” i dodaj do pliku następującą zawartość:
wersja: „3”usługi:
sieć:
zbudować: .
porty:
- 8080 : 8080
W powyższym fragmencie „ porty ” służy do podłączenia hosta do portu kontenera. W tym przypadku pierwsza wartość to port hosta, a druga wartość to port kontenera.
Krok 2: Uruchom aplikację
Po określeniu instrukcji w pliku tworzenia uruchom aplikację w kontenerze za pomocą przycisku „ docker — komponowanie ' Komenda:
docker — komponowanie
Krok 3: Weryfikacja
W celu weryfikacji wypisz pojemniki do tworzenia kompozycji, używając „ docker-compose ps ' Komenda:
tworzenie dokerów ps -A
Aby sprawdzić, czy kontener jest dostępny na komputerze hosta, przejdź do „ http://localhost:8080/ Adres URL. Tutaj możesz zobaczyć, że skutecznie przekierowaliśmy port kontenera na hoście:
Jak przekierować port do określonej sieci
Aby przekierować port kontenera do określonej sieci, użytkownik musi określić sieć, w której chce uzyskać dostęp do kontenera, za pomocą przycisku „ -sieć ' opcja. Spójrz na podane kroki w celu demonstracji.
Krok 1: Utwórz sieć
Utwórz nową sieć za pomocą „ utwórz sieć dokerów
Aby wyświetlić sieci Dockera, użyj opcji „ sieć dokowana ls ' Komenda:
sieć doków lsTutaj z sukcesem stworzyliśmy „ moja sieć ”, który używa „ most ' kierowca:
Krok 2: Mapa sieci
Aby uruchomić kontener i uzyskać do niego dostęp w określonej sieci przy użyciu techniki przekierowania portów, użyj poniższego polecenia:
uruchomienie dokera -P 8080 : 8080 --sieć moja-sieć golang-imgW danym poleceniu „ -P ” opcja publikuje kontener na określonym porcie określonej sieci. Tutaj ' -sieć ” służy do zdefiniowania sieci dokerów:
W celu weryfikacji ponownie przejdź do „ http://localhost:8080 ” i sprawdź, czy kontener jest dostępny w określonej sieci, czy nie:
Powyższe dane wyjściowe wskazują, że skutecznie przekierowaliśmy port kontenera w określonej sieci.
Notatka: Korzystając z sieci „host”, użytkownik nie musi publikować portu z kontenera na host za pomocą „ -P ' Lub ' -publikować ' opcja.
Przekaż port do określonej sieci za pomocą Docker Compose
Dodaj następujący fragment w „ docker-compose.yml ' plik. W poniższym fragmencie „ sieci Klawisz ” służy do określenia sieci:
wersja: „3”usługi:
sieć:
zbudować: .
porty:
- 8080 : 8080
Teraz uruchom aplikację w kontenerze za pomocą przycisku „ docker — komponowanie ' Komenda:
docker — komponowanie
Omówiliśmy metody przekierowania portów w Dockerze.
Wniosek
Aby przekierować port w Dockerze w celu uzyskania dostępu do aplikacji dokowanej poza kontenerem, użytkownik może użyć opcji „ -P ' Lub ' -publikować ” w opcji „ uruchomienie dokera ” lub użytkownik może użyć polecenia „ porty ” w pliku tworzenia Dockera. Aby uzyskać dostęp do kontenera w określonej sieci, użytkownik może przekierować port kontenera w sieci za pomocą opcji „ –sieć