Redirecționarea portului în Docker este un proces care ne permite să expunem portul container pe sistemul gazdă Docker. Ne permite să rulăm aplicația într-un mediu izolat și, de asemenea, să o facem accesibilă din afara containerului pe o mașină utilizator.
Această postare va demonstra:
- Cum să redirecționați portul în Docker folosind eticheta „-p” sau „–publish”.
- Cum să redirecționați portul în Docker utilizând Docker Compose
- Cum să redirecționați portul către o anumită rețea
- Concluzie
Cum să redirecționați portul în Docker folosind eticheta „-p” sau „–publish”.
Pentru a redirecționa un port în Docker, utilizatorul trebuie să publice portul containerului pe gazda Docker. În acest scop, rulați containerul pe gazda docker folosind „ -p ” sau ” -publica eticheta ” în ” docker run ” comanda.
Pentru o demonstrație corectă, urmați instrucțiunile de mai jos.
Pasul 1: Creați Dockerfile
Mai întâi, creați un fișier și setați-i numele ca „ Dockerfile ”. Acest fișier conține instrucțiuni textuale pentru a crea șablonul containerului Docker. De exemplu, să andocăm programul simplu Golang folosind fragmentul de mai jos în fișierul Docker:
DIN Golang: 1.8
WORKDIR / merge / src / aplicația
COPY main2.go .
RUN du-te construi -O server web.
EXPUNE 8080
CMD [ './webserver' ]
În fragmentul dat:
- „ DIN ” este utilizată comanda pentru a seta imaginea de bază.
- „ WORKDIR ” definește directorul de lucru al containerului.
- „ COPIE ” comanda va crea o copie a fișierului de program în calea specificată de container.
- „ ALERGA ” comanda va executa comanda specificată în container.
- „ EXPUNE comanda ” specifică portul în care va fi ascultat containerul.
- „ CMD ” specifică punctele executabile ale containerului.
Pasul 2: Creați un program Golang
Apoi, creați un alt fișier numit „ main2.go ” și inserați programul Golang furnizat de mai jos care tipărește un șir simplu pe port” 8080 ”:
pachet principal
import (
'fmt'
'Buturuga'
'net/http'
)
func handler ( În http.ResponseWriter, r * http.Solicitare ) {
html := `
DOCTYPE html >
< html >
< cap >
< titlu > Salut Golang ! titlu >
< stil >
corp {
culoare de fundal: #D2B48C;
}
.container {
text-align: centru;
umplutură: 50px;
}
stil >
cap >
< corp >
< div clasă = 'container' >
< h1 > Buna ziua ! Bun venit la tutorialul LinuxHint h1 >
div >
corp >
html >`
w.Header ( ) .A stabilit ( 'Tipul de conținut' , „text/html” )
fmt.Fprint ( În , html )
}
func principal ( ) {
http.HandleFunc ( '/' , manipulator )
log.Fatal ( http.ListenAndServe ( „0.0.0.0:8080” , nul ) )
}
Pasul 3: Generați instantaneul containerului
Acum, generați un instantaneu pentru container din fișierul Dockerfile specificat mai sus. În acest scop, mai întâi, navigați la directorul în care este creat fișierul Docker, folosind „ cd
Apoi, generați noua imagine de container utilizând comanda dată:
docker build -t golang-img .
Rezultatul dat arată că imaginea este creată în funcție de contextul de construcție furnizat.
Pasul 4: Redirecționați portul gazdă către portul containerului
Acum, executați containerul și trimiteți portul gazdă către portul containerului pentru a accesa aplicația dockerize în afara containerului pe o mașină locală. În acest scop, rulați „docker run –name
Aici ' -p ” este utilizat pentru a publica portul de execuție a containerului pe gazda docker:
Pasul 5: Verificare
Pentru verificare, vizualizați containerele care rulează folosind „ docker ps ”:
docher psÎn rezultatul de mai jos, aplicația containerizată ascultă pe interfețele de rețea disponibile „ 0.0.0.0 ” pe portul publicat ” 8080 ”. Aceasta implică faptul că portul este redirecționat către aplicația care rulează pe mașina gazdă:
Acum, lansați browserul și navigați la „ http://localhost:8080/ ” și verificați dacă tehnica de redirecționare a porturilor este aplicată sau nu și dacă aplicația containerizată este accesibilă în afara containerului pe sistemul gazdă:
Aici am redirecționat cu succes portul gazdă către portul container și aplicația este accesibilă pe gazda docker.
Cum să redirecționați portul în Docker utilizând Docker Compose
Pentru a redirecționa portul container către gazdă pentru a accesa aplicația containerizată din afara containerului, utilizatorul poate utiliza „ port ” tastați fișierul compune yaml. Docker compose este un serviciu Docker care ne permite să rulăm diferite servicii și aplicații în containere diferite. Folosind „ docker-compose.yml ”, utilizatorul poate, de asemenea, să redirecționeze portul container către mașina gazdă și să aibă o conexiune la aplicație cu lumea exterioară.
Consultați procedura de mai jos pentru ilustrații.
Pasul 1: Creați fișierul Compose
Mai întâi, generați un fișier numit „ docker-compose.yml ” și adăugați următorul conținut la fișier:
versiune: '3'Servicii:
web:
construi: .
porturi:
- 8080 : 8080
În fragmentul de mai sus, „ porturi ” este folosită pentru a conecta gazda la portul container. Aici, prima valoare este portul gazdă, iar a doua valoare este portul containerului.
Pasul 2: Lansați aplicația
După ce ați specificat instrucțiunile din fișierul de scriere, lansați aplicația într-un container utilizând „ docker-compune ”comandă:
docker-compune
Pasul 3: Verificare
Pentru verificare, enumerați containerele compuse folosind butonul „ docker-compose ps ”comandă:
docker-compune ps -A
Pentru a verifica dacă containerul este accesibil pe mașina gazdă, navigați la „ http://localhost:8080/ ” URL. Aici, puteți vedea că am redirecționat efectiv portul container pe gazdă:
Cum să redirecționați portul către o rețea specifică
Pentru a redirecționa un port de container către o anumită rețea, utilizatorul trebuie să specifice rețeaua pe care dorește să acceseze containerul utilizând „ -reţea ' opțiune. Uitați-vă la pașii indicați pentru demonstrație.
Pasul 1: Creați o rețea
Creați o nouă rețea folosind „ docker network create
Pentru a vizualiza rețelele Docker, utilizați „ docker network ls ”comandă:
rețea docker lsAici, am creat cu succes „ mygo-rețea „care folosește „ pod ' conducător auto:
Pasul 2: Hartă rețeaua
Pentru a rula și a accesa containerul în rețeaua specifică utilizând tehnica de redirecționare a porturilor, utilizați comanda de mai jos:
docker run -p 8080 : 8080 --reţea mygo-network golang-imgÎn comanda dată, „ -p ” opțiunea publică containerul pe un port specificat al rețelei specificate. Aici ' -reţea ” opțiunea este utilizată pentru a defini rețeaua docker:
Pentru verificare, navigați din nou la „ http://localhost:8080 ” și verificați dacă containerul este accesibil sau nu în rețeaua specificată:
Rezultatul de mai sus indică faptul că am redirecționat efectiv portul container într-o anumită rețea.
Notă: În timpul utilizării rețelei „gazdă”, utilizatorul nu trebuie să publice portul de la container la gazdă folosind „ -p ” sau ” -publica ' opțiune.
Redirecționați portul către o rețea specifică utilizând Docker Compose
Adăugați următorul fragment în „ docker-compose.yml ” dosar. În fragmentul de mai jos, „ retelelor ” este folosită pentru a specifica rețeaua:
versiune: '3'Servicii:
web:
construi: .
porturi:
- 8080 : 8080
Acum, lansați aplicația într-un container utilizând „ docker-compune ”comandă:
docker-compune
Am acoperit metodele de redirecționare a porturilor în Docker.
Concluzie
Pentru a redirecționa portul în Docker pentru accesarea aplicației dockerize în afara containerului, utilizatorul poate folosi fie „ -p ” sau ” -publica ” din opțiunea ” docker run ” sau utilizatorul poate folosi comanda ” porturi ” în fișierul de compunere Docker. Pentru a accesa containerul într-o anumită rețea, utilizatorul poate redirecționa portul container într-o rețea folosind butonul „ –rețea