Presmerovanie portov v Dockeri je proces, ktorý nám umožňuje odhaliť kontajnerový port na hostiteľskom systéme Docker. Umožňuje nám spustiť aplikáciu v izolovanom prostredí a tiež ju sprístupniť mimo kontajnera na používateľskom počítači.
Tento príspevok bude demonštrovať:
- Ako presmerovať port v Docker pomocou značky „-p“ alebo „–publish“.
- Ako presmerovať port v Docker pomocou Docker Compose
- Ako presmerovať port do konkrétnej siete
- Záver
Ako presmerovať port v Docker pomocou značky „-p“ alebo „–publish“.
Na preposlanie portu v Dockeri musí používateľ zverejniť port kontajnera na hostiteľovi Docker. Na tento účel spustite kontajner na hostiteľovi dokovacieho zariadenia pomocou „ -p “ alebo „ – zverejniť ” tag v “ docker spustiť “príkaz.
Pre správnu ukážku postupujte podľa nižšie uvedených pokynov.
Krok 1: Vytvorte Dockerfile
Najprv vytvorte súbor a nastavte jeho názov ako „ Dockerfile “. Tento súbor obsahuje textové pokyny na vytvorenie šablóny kontajnera Docker. Napríklad dockerizeme jednoduchý program Golang pomocou nižšie uvedeného úryvku v súbore Dockerfile:
Z golangu: 1.8
WORKDIR / ísť / src / aplikácie
KOPÍROVAŤ main2.go .
RUN choďte stavať -O webový server .
VYSTAVIŤ 8080
CMD [ './webový server' ]
V danom úryvku:
- “ OD ” sa používa na nastavenie základného obrázku.
- “ WORKDIR “ definuje pracovný adresár kontajnera.
- “ KOPÍROVAŤ ” vytvorí kópiu programového súboru v kontajnerom špecifikovanej ceste.
- “ RUN ” príkaz vykoná zadaný príkaz v kontajneri.
- “ VYSTAVIŤ ” určuje port, na ktorom sa bude kontajner počúvať.
- “ CMD ” určuje spustiteľné body kontajnera.
Krok 2: Vytvorte program Golang
Potom vytvorte ďalší súbor s názvom „ main2.go “ a prilepte nižšie poskytnutý program Golang, ktorý vytlačí jednoduchý reťazec na port “ 8080 “:
hlavný balík
importovať (
'fmt'
'log'
'net/http'
)
obslužný program func ( In http.ResponseWriter, r * http.Žiadosť ) {
html := `
DOCTYPE html >
< html >
< hlavu >
< titul > Ahoj Golang ! titul >
< štýl >
telo {
farba pozadia: #D2B48C;
}
.kontajner {
text-align: center;
výplň: 50px;
}
štýl >
hlavu >
< telo >
< div trieda = 'kontajner' >
< h1 > Ahoj ! Vitajte v LinuxHint Tutorial h1 >
div >
telo >
html >`
w.Header ( ) .Nastavte ( 'Druh obsahu' , 'text/html' )
fmt.Fprint ( In , html )
}
func main ( ) {
http.HandleFunc ( '/' , psovod )
log.Osudný ( http.ListenAndServe ( '0.0.0.0:8080' , nula ) )
}
Krok 3: Vytvorte snímku kontajnera
Teraz vytvorte snímku pre kontajner z vyššie uvedeného súboru Dockerfile. Na tento účel najprv prejdite do adresára, v ktorom je vytvorený súbor Dockerfile pomocou „ cd
Ďalej vygenerujte nový obrázok kontajnera pomocou daného príkazu:
zostava dockera -t golang-img .
Daný výsledok ukazuje, že obrázok je vytvorený podľa poskytnutého kontextu zostavy.
Krok 4: Prepošlite port hostiteľa na port kontajnera
Teraz spustite kontajner a pošlite hostiteľský port do kontajnerového portu, aby ste získali prístup k aplikácii dockerize mimo kontajnera na lokálnom počítači. Na tento účel spustite “docker run –name
Tu je „ -p Príznak ” sa používa na zverejnenie vykonávacieho portu kontajnera na hostiteľovi doku:
Krok 5: Overenie
Na overenie si zobrazte spustené kontajnery pomocou „ docker ps “:
doker psV nižšie uvedenom výsledku kontajnerová aplikácia počúva na dostupných sieťových rozhraniach “ 0.0.0.0 “na zverejnenom porte” 8080 “. Znamená to, že port je presmerovaný do spustenej aplikácie na hostiteľskom počítači:
Teraz spustite prehliadač a prejdite na „ http://localhost:8080/ “ a overte, či je použitá technika presmerovania portov alebo nie a či je kontajnerizovaná aplikácia prístupná mimo kontajnera v hostiteľskom systéme:
Tu sme úspešne preposlali hostiteľský port na kontajnerový port a aplikácia je prístupná na hostiteľovi doku.
Ako presmerovať port v Docker pomocou Docker Compose
Na presmerovanie kontajnerového portu hostiteľovi na prístup ku kontajnerovej aplikácii mimo kontajnera môže používateľ použiť „ prístav ” zadajte súbor yaml na zostavenie. Docker compose je služba Docker, ktorá nám umožňuje spúšťať rôzne služby a aplikácie v rôznych kontajneroch. Pomocou „ docker-compose.yml ” môže užívateľ tiež poslať kontajnerový port do hostiteľského počítača a mať spojenie aplikácie s vonkajším svetom.
Pozrite si nižšie uvedený postup pre ilustrácie.
Krok 1: Vytvorte nový súbor
Najprv vygenerujte súbor s názvom „ docker-compose.yml ” a do súboru pridajte nasledujúci obsah:
verzia: '3'služby:
web:
postaviť: .
porty:
- 8080 : 8080
Vo vyššie uvedenom úryvku je „ prístavov ” kľúč sa používa na pripojenie hostiteľa k portu kontajnera. Tu je prvá hodnota hostiteľský port a druhá hodnota je kontajnerový port.
Krok 2: Spustite aplikáciu
Po zadaní pokynov v komponovanom súbore spustite aplikáciu v kontajneri pomocou „ docker-compose up 'príkaz:
docker-compose up
Krok 3: Overenie
Na overenie uveďte zoznam kontajnerov na písanie pomocou „ docker-compose ps 'príkaz:
docker-compose ps -a
Ak chcete skontrolovať, či je kontajner prístupný na hostiteľskom počítači, prejdite na „ http://localhost:8080/ ” URL. Tu môžete vidieť, že sme efektívne preposlali kontajnerový port na hostiteľovi:
Ako presmerovať port do konkrétnej siete
Na presmerovanie portu kontajnera do konkrétnej siete musí používateľ špecifikovať sieť, v ktorej chce pristupovať ku kontajneru, pomocou „ – sieť možnosť “. Pozrite si uvedené kroky na ukážku.
Krok 1: Vytvorte sieť
Vytvorte novú sieť pomocou „ docker network create
Ak chcete zobraziť siete Docker, použite „ docker network ls 'príkaz:
dokovacia sieť lsTu sme úspešne vytvorili „ mygo-network “, ktorý používa “ Most “vodič:
Krok 2: Mapa siete
Ak chcete spustiť kontajner a pristupovať k nemu v konkrétnej sieti pomocou techniky presmerovania portov, použite nasledujúci príkaz:
docker spustiť -p 8080 : 8080 -- sieť mygo-network golang-imgV danom príkaze je „ -p ” zverejní kontajner na špecifikovanom porte zadanej siete. Tu je „ – sieť ” možnosť sa používa na definovanie dokovacej siete:
Pre overenie znova prejdite na „ http://localhost:8080 ” port a skontrolujte, či je kontajner prístupný v zadanej sieti alebo nie:
Vyššie uvedený výstup naznačuje, že sme efektívne preposlali kontajnerový port v konkrétnej sieti.
Poznámka: Pri používaní „hostiteľskej“ siete používateľ nemusí publikovať port z kontajnera na hostiteľa pomocou „ -p “ alebo „ – zverejniť možnosť “.
Presmerujte port do konkrétnej siete pomocou Docker Compose
Pridajte nasledujúci úryvok do „ docker-compose.yml “. V úryvku nižšie je „ siete ” kľúč sa používa na špecifikáciu siete:
verzia: '3'služby:
web:
postaviť: .
porty:
- 8080 : 8080
Teraz spustite aplikáciu v kontajneri pomocou „ docker-compose up 'príkaz:
docker-compose up
Pokryli sme metódy pre presmerovanie portov v Dockeri.
Záver
Na preposlanie portu v Dockeri na prístup k aplikácii dockerize mimo kontajnera môže používateľ použiť buď „ -p “ alebo „ – zverejniť ” možnosť v “ docker spustiť “ alebo môže používateľ použiť príkaz “ prístavov ” v zostave súboru Docker. Na prístup ku kontajneru v konkrétnej sieti môže používateľ presmerovať port kontajnera v sieti pomocou „ –network