Přesměrování portů v Dockeru je proces, který nám umožňuje odhalit port kontejneru na hostitelském systému Docker. Umožňuje nám spouštět aplikaci v izolovaném prostředí a také ji zpřístupňovat z vnějšku kontejneru na uživatelském počítači.
Tento příspěvek ukáže:
- Jak předat port v Dockeru pomocí značky „-p“ nebo „–publish“.
- Jak předat port v Dockeru pomocí Docker Compose
- Jak přesměrovat port do konkrétní sítě
- Závěr
Jak předat port v Dockeru pomocí značky „-p“ nebo „–publish“.
K předání portu v Dockeru musí uživatel publikovat port kontejneru na hostiteli Dockeru. Za tímto účelem spusťte kontejner na hostiteli dockeru pomocí „ -p “ nebo „ -publikovat ” tag v “ docker spustit “příkaz.
Pro správnou demonstraci postupujte podle níže uvedených pokynů.
Krok 1: Vytvořte Dockerfile
Nejprve vytvořte soubor a nastavte jeho název jako „ Dockerfile “. Tento soubor obsahuje textové pokyny k vytvoření šablony kontejneru Docker. Pojďme například ukotvit jednoduchý program Golang pomocí níže uvedeného úryvku v souboru Dockerfile:
Z golangu: 1.8
WORKDIR / jít / src / aplikace
ZKOPÍROVAT main2.go .
RUN jděte stavět -Ó webový server .
ODHALIT 8080
CMD [ './webový server' ]
V daném úryvku:
- “ Z ” se používá k nastavení základního obrázku.
- “ WORKDIR “ definuje pracovní adresář kontejneru.
- “ KOPÍROVAT ” vytvoří kopii programového souboru v cestě zadané kontejnerem.
- “ BĚH ” spustí zadaný příkaz v kontejneru.
- “ ODHALIT ” určuje port, na kterém bude kontejner naslouchán.
- “ CMD ” určuje spustitelné body kontejneru.
Krok 2: Vytvořte program Golang
Dále vytvořte další soubor s názvem „ main2.go “ a vložte níže poskytnutý program Golang, který vytiskne jednoduchý řetězec na port “ 8080 “:
hlavní balíček
import (
'fmt'
'log'
'net/http'
)
obslužný program func ( v http.ResponseWriter, r * http.Žádost ) {
html := `
DOCTYPE html >
< html >
< hlava >
< titul > Ahoj Golange ! titul >
< styl >
tělo {
barva pozadí: #D2B48C;
}
.kontejner {
text-align: center;
odsazení: 50px;
}
styl >
hlava >
< tělo >
< div třída = 'kontejner' >
< h1 > Ahoj ! Vítejte v LinuxHint Tutorial h1 >
div >
tělo >
html >`
w.Záhlaví ( ) .Soubor ( 'Typ obsahu' , 'text/html' )
fmt.Fprint ( v , html )
}
func main ( ) {
http.HandleFunc ( '/' , psovod )
log.Osudný ( http.ListenAndServe ( '0.0.0.0:8080' , nula ) )
}
Krok 3: Vygenerujte snímek kontejneru
Nyní vygenerujte snímek pro kontejner z výše uvedeného souboru Dockerfile. Za tímto účelem nejprve přejděte do adresáře, kde je soubor Dockerfile vytvořen pomocí „ cd
Dále vygenerujte nový obrázek kontejneru pomocí daného příkazu:
sestavení dockeru -t golang-img .
Daný výsledek ukazuje, že obrázek je vytvořen podle poskytnutého kontextu sestavení.
Krok 4: Předání portu hostitele na port kontejneru
Nyní spusťte kontejner a předejte hostitelský port do kontejnerového portu, abyste získali přístup k aplikaci dockerize mimo kontejner na místním počítači. Za tímto účelem spusťte “docker run –name
Zde, „ -p příznak ” se používá k publikování spouštěcího portu kontejneru na hostiteli dockeru:
Krok 5: Ověření
Pro ověření zobrazte běžící kontejnery pomocí „ docker ps “:
přístavní dělník psV níže uvedeném výsledku kontejnerizovaná aplikace naslouchá na dostupných síťových rozhraních “ 0.0.0.0 “ na zveřejněném portu “ 8080 “. Znamená to, že port je předán běžící aplikaci na hostitelském počítači:
Nyní spusťte prohlížeč a přejděte na „ http://localhost:8080/ “ a ověřte, zda je použita technika přesměrování portů či nikoli a zda je kontejnerová aplikace přístupná mimo kontejner v hostitelském systému:
Zde jsme úspěšně předali port hostitele na port kontejneru a aplikace je přístupná na hostiteli dockeru.
Jak předat port v Dockeru pomocí Docker Compose
K předání kontejnerového portu hostiteli pro přístup ke kontejnerové aplikaci z vnějšku kontejneru může uživatel využít „ přístav ” zadejte do souboru yaml pro vytvoření. Docker compose je služba Docker, která nám umožňuje spouštět různé služby a aplikace v různých kontejnerech. Za použití ' docker-compose.yml ” může uživatel také přeposlat kontejnerový port na hostitelský počítač a mít spojení aplikace s vnějším světem.
Podívejte se na níže uvedený postup pro ilustrace.
Krok 1: Vytvořte nový soubor
Nejprve vygenerujte soubor s názvem „ docker-compose.yml ” a přidejte do souboru následující obsah:
verze: '3'služby:
web:
stavět: .
porty:
- 8080 : 8080
Ve výše uvedeném úryvku je „ porty ” klíč se používá k připojení hostitele k portu kontejneru. Zde je první hodnotou hostitelský port a druhou hodnotou je port kontejneru.
Krok 2: Spusťte aplikaci
Po zadání pokynů v souboru pro vytvoření spusťte aplikaci v kontejneru pomocí „ docker-compose up 'příkaz:
docker-compose up
Krok 3: Ověření
Pro ověření sepište kontejnery pro psaní pomocí „ docker-compose ps 'příkaz:
docker-compose ps -A
Chcete-li zkontrolovat, zda je kontejner přístupný na hostitelském počítači, přejděte na „ http://localhost:8080/ “ URL. Zde můžete vidět, že jsme efektivně předali port kontejneru na hostiteli:
Jak přesměrovat port do konkrétní sítě
K předání portu kontejneru do konkrétní sítě musí uživatel zadat síť, ve které chce ke kontejneru přistupovat pomocí „ -síť “ možnost. Podívejte se na uvedené kroky pro demonstraci.
Krok 1: Vytvořte síť
Vytvořte novou síť pomocí „ vytvoření sítě docker
Chcete-li zobrazit sítě Docker, použijte „ docker network ls 'příkaz:
docker síť lsZde jsme úspěšně vytvořili „ mygo-network “, který používá “ most ' Řidič:
Krok 2: Mapování sítě
Chcete-li spustit kontejner a přistupovat k němu v konkrétní síti pomocí techniky přesměrování portů, použijte níže uvedený příkaz:
docker spustit -p 8080 : 8080 --síť mygo-network golang-imgV daném příkazu je „ -p ” publikuje kontejner na zadaném portu zadané sítě. Zde, „ -síť ” se používá k definování dockerové sítě:
Pro ověření znovu přejděte na „ http://localhost:8080 ” a zkontrolujte, zda je kontejner přístupný v zadané síti nebo ne:
Výše uvedený výstup naznačuje, že jsme efektivně předali port kontejneru na konkrétní síť.
Poznámka: Při používání „hostitelské“ sítě uživatel nemusí publikovat port z kontejneru na hostitele pomocí „ -p “ nebo „ -publikovat “ možnost.
Přesměrování portu do konkrétní sítě pomocí Docker Compose
Přidejte následující úryvek do „ docker-compose.yml “. V níže uvedeném úryvku je „ sítí Klíč se používá k určení sítě:
verze: '3'služby:
web:
stavět: .
porty:
- 8080 : 8080
Nyní spusťte aplikaci v kontejneru pomocí „ docker-compose up 'příkaz:
docker-compose up
Pokryli jsme metody pro přesměrování portů v Dockeru.
Závěr
K předání portu v Dockeru pro přístup k aplikaci dockerize mimo kontejner může uživatel buď použít „ -p “ nebo „ -publikovat “ možnost v “ docker spustit “ nebo může uživatel použít “ porty ” v souboru Docker Compose. Za účelem přístupu ke kontejneru v konkrétní síti může uživatel přeposlat port kontejneru v síti pomocí „ –network “ možnost. Tento blog demonstroval techniky předávání portů v Dockeru.