Ako presmerovať port v Dockeri

Ako Presmerovat Port V Dockeri



Docker je obľúbená dockerizačná platforma, ktorá ukotvuje aplikácie a softvér v izolovanom prostredí známom ako kontajner. Pri vykonávaní aplikácií v kontajneroch sa od používateľov zvyčajne vyžaduje prístup ku kontajnerovej aplikácii mimo kontajnera. Na tento účel musia používatelia použiť techniku ​​presmerovania portov.

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“.

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 'príkaz:

Ď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 -p : 'príkaz:

docker spustiť --názov go-cont -p 8080 : 8080 golang-img

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 ps

V 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 “príkaz. V predvolenom nastavení bude táto sieť používať ovládač mosta:

docker network vytvoriť mygo-network

Ak chcete zobraziť siete Docker, použite „ docker network ls 'príkaz:

dokovacia sieť ls

Tu 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-img

V 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 možnosť “. Tento blog demonštroval techniky preposielania portov v Dockeri.