Hvordan videresende port i Docker

Hvordan Videresende Port I Docker



Docker er en godt likt dockeriseringsplattform som dockeriserer applikasjoner og programvare i et isolert miljø kjent som en container. Mens de kjører applikasjoner i containere, er brukere vanligvis pålagt å få tilgang til den containeriserte applikasjonen utenfor containeren. For dette formålet må brukere bruke portvideresendingsteknikken.

Portvideresending i Docker er en prosess som gjør oss i stand til å eksponere containerporten på Docker-vertssystemet. Den tillater oss å kjøre applikasjonen i et isolert miljø og også gjøre den tilgjengelig fra utsiden av beholderen på en brukermaskin.

Dette innlegget vil demonstrere:







Hvordan videresende port i Docker ved å bruke '-p' eller '–publish' tag

For å videresende en port i Docker, må brukeren publisere containerporten på Docker-verten. For dette formålet, kjør beholderen på docker-verten ved å bruke ' -s ' eller ' -publisere ' tag i ' docker run ' kommando.



Følg instruksjonene nedenfor for riktig demonstrasjon.



Trinn 1: Lag Dockerfile

Først oppretter du en fil og setter navnet som ' Dockerfil '. Denne filen inneholder tekstinstruksjonene for å lage malen til Docker-beholderen. La oss for eksempel dokke det enkle Golang-programmet ved å bruke utdraget nedenfor i Dockerfilen:





FRA golang: 1.8

WORKDIR / / src / app

COPY main2.go .

LØP og bygg -O Internett server .

AVDEKKE 8080

CMD [ './Internett server' ]

I det gitte utdraget:

  • ' FRA ”-kommandoen brukes til å angi grunnbildet.
  • ' WORKDIR ' definerer beholderens arbeidskatalog.
  • ' KOPIERE kommandoen vil lage en kopi av programfilen i den containerspesifiserte banen.
  • ' LØPE kommandoen vil utføre den angitte kommandoen i beholderen.
  • ' AVDEKKE ” kommandoen spesifiserer porten der containeren skal lyttes til.
  • ' CMD ” spesifiserer de kjørbare punktene til beholderen.

Trinn 2: Lag et Golang-program

Deretter oppretter du en annen fil med navnet ' main2.go ' og lim inn Golang-programmet nedenfor som skriver ut en enkel streng på port ' 8080 ':



hovedpakke

import (

'fmt'

'Logg'

'net/http'

)

funksjonsbehandler ( I http.ResponseWriter, r * http.Request ) {

html := `

DOCTYPE html >

< html >

< hode >

< tittel > Hei Golang ! tittel >

< stil >

kropp {

bakgrunnsfarge: #D2B48C;

}

.container {

tekst-align: center;

polstring: 50px;

}

stil >

hode >

< kropp >

< div klasse = 'container' >

< h1 > Hallo ! Velkommen til LinuxHint Tutorial h1 >

div >

kropp >

html >`

w.Overskrift ( ) .Sett ( 'Innholdstype' , 'tekst/html' )

fmt.Fprint ( I , html )

}

func main ( ) {

http.HandleFunc ( '/' , handler )

log.Fatal ( http.ListenAndServe ( '0.0.0.0:8080' , null ) )

}

Trinn 3: Generer containerens øyeblikksbilde

Generer nå et øyeblikksbilde for beholderen fra den ovenfor angitte Dockerfilen. For dette formålet, naviger først til katalogen der Dockerfilen er opprettet ved å bruke ' cd ' kommando:

Deretter genererer du det nye beholderbildet ved å bruke den gitte kommandoen:

dockerbygg -t golang-img .

Det gitte resultatet viser at bildet er opprettet i henhold til den angitte byggekonteksten.

Trinn 4: Videresend vertsport til containerport

Kjør nå containeren og videresend vertsporten til containerporten for å få tilgang til dockerize-appen utenfor containeren på en lokal maskin. For dette formålet, kjør “docker run –navn -p : ' kommando:

docker run --Navn gå-forts -s 8080 : 8080 golang-img

Her er ' -s flagget brukes til å publisere containerutføringsporten på docker-verten:

Trinn 5: Verifisering

For verifisering, se de kjørende beholderne ved å bruke ' docker ps ':

havnearbeider ps

I resultatet nedenfor lytter den containeriserte applikasjonen på tilgjengelige nettverksgrensesnitt ' 0.0.0.0 ' på publisert port ' 8080 '. Det innebærer at porten videresendes til den kjørende applikasjonen på vertsmaskinen:

Nå, start nettleseren og naviger til ' http://localhost:8080/ ' og kontroller om portvideresendingsteknikken er brukt eller ikke, og om den containeriserte applikasjonen er tilgjengelig utenfor containeren på vertssystemet:

Her har vi videresendt vertsporten til containerporten og applikasjonen er tilgjengelig på docker-verten.

Hvordan videresende port i Docker ved hjelp av Docker Compose

For å videresende containerporten til verten for å få tilgang til den containeriserte applikasjonen fra utenfor containeren, kan brukeren bruke ' havn ” tast inn compose yaml-filen. Docker compose er en Docker-tjeneste som lar oss kjøre forskjellige tjenester og applikasjoner i forskjellige containere. Bruker ' docker-compose.yml ”-fil, kan brukeren også videresende containerporten til vertsmaskinen og ha en applikasjonsforbindelse til omverdenen.

Sjekk ut prosedyren nedenfor for illustrasjoner.

Trinn 1: Lag Compose File

Generer først en fil som heter ' docker-compose.yml '-filen og legg til følgende innhold i filen:

versjon: '3'

tjenester:

web:

bygge: .

porter:

- 8080 : 8080

I utdraget ovenfor, ' havner ”-tasten brukes til å koble verten til containerporten. Her er den første verdien vertsporten, og den andre verdien er containerporten.

Trinn 2: Start appen

Etter å ha spesifisert instruksjonene i skrivefilen, start applikasjonen i en beholder ved å bruke ' docker-komponere ' kommando:

docker-komponere

Trinn 3: Verifisering

For verifisering, skriv ned skrivebeholderne ved å bruke ' docker-compose ps ' kommando:

docker-komponere ps -en

For å sjekke om beholderen er tilgjengelig på vertsmaskinen, naviger til ' http://localhost:8080/ ' URL. Her kan du se at vi effektivt har videresendt containerporten til verten:

Hvordan videresende port til spesifikt nettverk

For å videresende en containerport til et spesifikt nettverk, må brukeren spesifisere nettverket de vil ha tilgang til containeren på ved å bruke ' -Nettverk alternativet. Se på de gitte trinnene for demonstrasjon.

Trinn 1: Opprett et nettverk

Opprett et nytt nettverk ved å bruke ' docker-nettverk opprette ' kommando. Som standard vil dette nettverket bruke en brodriver:

docker-nettverk opprette mygo-nettverk

For å se Docker-nettverkene, bruk ' docker-nettverk ls ' kommando:

docker-nettverk ls

Her har vi med suksess opprettet ' mygo-nettverk ' som bruker ' bro ' sjåfør:

Trinn 2: Kartlegg nettverk

For å kjøre og få tilgang til beholderen på det spesifikke nettverket ved å bruke portvideresendingsteknikken, bruk kommandoen nedenfor:

docker run -s 8080 : 8080 --Nettverk mygo-nettverk golang-img

I den gitte kommandoen ' -s alternativet publiserer beholderen på en spesifisert port i det angitte nettverket. Her er ' -Nettverk alternativet brukes til å definere docker-nettverket:

For bekreftelse, gå igjen til ' http://localhost:8080 ' port og sjekk om containeren er tilgjengelig på det angitte nettverket eller ikke:

Utdataene ovenfor indikerer at vi effektivt har videresendt containerporten på et spesifikt nettverk.

Merk: Mens du bruker 'vert'-nettverket, trenger ikke brukeren å publisere porten fra container til vert ved å bruke ' -s ' eller ' -publisere alternativet.

Videresend port til spesifikt nettverk ved hjelp av Docker Compose

Legg til følgende utdrag i ' docker-compose.yml ' fil. I utdraget nedenfor, ' nettverk '-tasten brukes til å spesifisere nettverket:

versjon: '3'
tjenester:

web:
bygge: .
porter:
- 8080 : 8080

Nå, start applikasjonen i en beholder ved å bruke ' docker-komponere ' kommando:

docker-komponere

Vi har dekket metodene for portvideresending i Docker.

Konklusjon

For å videresende porten i Docker for tilgang til dockerize-applikasjonen utenfor containeren, kan brukeren enten bruke ' -s ' eller ' -publisere '-alternativet i ' docker run kommandoen eller brukeren kan bruke havner ”-tasten i Docker-skrivefilen. For å få tilgang til containeren på et spesifikt nettverk, kan brukeren videresende containerporten på et nettverk ved å bruke ' –nettverk alternativet. Denne bloggen har demonstrert teknikkene for å videresende porter i Docker.