Sådan videresender du port i Docker

Sadan Videresender Du Port I Docker



Docker er en vellidt dockeriseringsplatform, der dockeriserer applikationer og software i et isoleret miljø kendt som en container. Mens de udfører applikationer i containere, er brugere normalt forpligtet til at få adgang til den containeriserede applikation uden for containeren. Til dette formål skal brugerne anvende portvideresendelsesteknikken.

Port forwarding i Docker er en proces, der gør os i stand til at afsløre containerporten på Docker-værtssystemet. Det giver os mulighed for at køre applikationen i et isoleret miljø og også gøre det tilgængeligt uden for containeren på en brugermaskine.

Dette indlæg vil demonstrere:







Sådan videresendes port i Docker ved hjælp af '-p' eller '–publish' tag

For at videresende en port i Docker skal brugeren offentliggøre containerporten på Docker-værten. Til dette formål skal du køre containeren på docker-værten ved hjælp af ' -s ' eller ' -offentliggøre ' tag i ' docker-løb ” kommando.



Følg nedenstående instruktioner for korrekt demonstration.



Trin 1: Lav Dockerfile

Først skal du oprette en fil og angive dens navn som ' Dockerfil ”. Denne fil indeholder tekstinstruktionerne til at oprette skabelonen til Docker-beholderen. Lad os for eksempel dockerisere det simple Golang-program ved hjælp af nedenstående uddrag i Dockerfilen:





FRA golang: 1.8

WORKDIR / / src / app

COPY main2.go .

LØB gå bygger -O Webserver .

UDSÆTTE 8080

CMD [ './Webserver' ]

I det givne uddrag:

  • FRA kommandoen bruges til at indstille basisbilledet.
  • WORKDIR ' definerer containerens arbejdsmappe.
  • KOPI kommandoen vil oprette en kopi af programfilen i den container-specificerede sti.
  • LØB ” kommando vil udføre den angivne kommando i containeren.
  • UDSÆTTE ” kommando angiver den port, hvor containeren vil blive lyttet til.
  • CMD ” angiver containerens eksekverbare punkter.

Trin 2: Opret et Golang-program

Opret derefter en anden fil med navnet ' main2.go ' og indsæt nedenstående Golang-program, der udskriver en simpel streng på port ' 8080 ”:



hovedpakke

importere (

'fmt'

'log'

'net/http'

)

func handler ( I http.ResponseWriter, r * http.Forespørgsel ) {

html := `

DOCTYPE html >

< html >

< hoved >

< titel > Hej Golang ! titel >

< stil >

legeme {

baggrundsfarve: #D2B48C;

}

.beholder {

tekst-align: center;

polstring: 50px;

}

stil >

hoved >

< legeme >

< div klasse = 'beholder' >

< h1 > Hej ! Velkommen til LinuxHint Tutorial h1 >

div >

legeme >

html >`

w.Overskrift ( ) .Sæt ( 'Indholdstype' , 'tekst/html' )

fmt.Fprint ( I , html )

}

func hoved ( ) {

http.HandleFunc ( '/' , handler )

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

}

Trin 3: Generer Containers Snapshot

Generer nu et øjebliksbillede for containeren fra den ovenfor angivne Dockerfile. Til dette formål skal du først navigere til den mappe, hvor Dockerfilen er oprettet ved hjælp af ' cd kommando:

Generer derefter det nye containerbillede ved hjælp af den givne kommando:

docker bygning -t golang-img .

Det givne resultat viser, at billedet er skabt i henhold til den angivne byggekontekst.

Trin 4: Videresend værtsport til containerport

Udfør nu containeren og videresend værtsporten til containerporten for at få adgang til dockerize-appen uden for containeren på en lokal maskine. Til dette formål skal du køre “docker run –navn -p : kommando:

docker-løb --navn gå-forts -s 8080 : 8080 golang-img

Her er ' -s ” flag bruges til at publicere containerens eksekveringsport på docker-værten:

Trin 5: Bekræftelse

For verifikation, se de kørende containere ved hjælp af ' docker ps ”:

havnearbejder ps

I nedenstående resultat lytter den containeriserede applikation på tilgængelige netværksgrænseflader ' 0.0.0.0 ' på offentliggjort port ' 8080 ”. Det indebærer, at porten videresendes til den kørende applikation på værtsmaskinen:

Start nu browseren og naviger til ' http://localhost:8080/ ” og kontroller, om portvideresendelsesteknikken er anvendt eller ej, og om den containeriserede applikation er tilgængelig uden for containeren på værtssystemet:

Her har vi videresendt værtsporten til containerporten, og applikationen er tilgængelig på docker-værten.

Sådan videresender du port i Docker ved hjælp af Docker Compose

For at videresende containerporten til værten for at få adgang til containerapplikationen uden for containeren, kan brugeren bruge ' Havn ” indtast yaml-filen. Docker compose er en Docker-tjeneste, der gør det muligt for os at køre forskellige tjenester og applikationer i forskellige containere. Bruger ' docker-compose.yml ” fil, kan brugeren også videresende containerporten til værtsmaskinen og have en applikationsforbindelse til omverdenen.

Se nedenstående procedure for illustrationer.

Trin 1: Lav Compose-fil

Generer først en fil med navnet ' docker-compose.yml ”-fil og tilføje følgende indhold til filen:

version: '3'

tjenester:

web:

bygge:.

havne:

- 8080 : 8080

I ovenstående uddrag er ' havne ”-tasten bruges til at forbinde værten til containerporten. Her er den første værdi værtsporten, og den anden værdi er containerporten.

Trin 2: Start app

Efter at have specificeret instruktionerne i skrivefilen, start applikationen i en beholder ved hjælp af ' docker-compose up kommando:

docker-compose up

Trin 3: Bekræftelse

For verifikation skal du liste de komponerede containere ned ved at bruge ' docker-compose ps kommando:

docker-komponer ps -en

For at kontrollere, om beholderen er tilgængelig på værtsmaskinen, skal du navigere til ' http://localhost:8080/ ' URL. Her kan du se, at vi effektivt har videresendt containerporten på værten:

Sådan videresender du port til specifikt netværk

For at videresende en containerport til et specifikt netværk skal brugeren angive det netværk, som de vil have adgang til containeren på ved hjælp af ' – netværk ' mulighed. Se på de givne trin til demonstration.

Trin 1: Opret et netværk

Opret et nyt netværk ved hjælp af ' docker-netværk opret ” kommando. Som standard vil dette netværk bruge en brodriver:

docker-netværk opret mygo-netværk

For at se Docker-netværkene skal du bruge ' docker netværk ls kommando:

docker netværk ls

Her har vi med succes skabt ' mygo-netværk ' der bruger ' bro ' chauffør:

Trin 2: Kortlæg netværk

For at køre og få adgang til containeren på det specifikke netværk ved hjælp af portvideresendelsesteknikken, brug nedenstående kommando:

docker-løb -s 8080 : 8080 --netværk mygo-netværk golang-img

I den givne kommando, ' -s ” option udgiver containeren på en specificeret port på det angivne netværk. Her er ' – netværk ” mulighed bruges til at definere docker-netværket:

For bekræftelse skal du igen gå til ' http://localhost:8080 ” port og kontroller, om containeren er tilgængelig på det angivne netværk eller ej:

Ovenstående output indikerer, at vi effektivt har videresendt containerporten på et specifikt netværk.

Bemærk: Mens brugeren bruger 'værts'-netværket, behøver brugeren ikke at publicere porten fra container til vært ved hjælp af ' -s ' eller ' -offentliggøre ' mulighed.

Videresend port til specifikt netværk ved hjælp af Docker Compose

Tilføj følgende uddrag i ' docker-compose.yml ' fil. I nedenstående uddrag er ' netværk ”-tasten bruges til at angive netværket:

version: '3'
tjenester:

web:
bygge:.
havne:
- 8080 : 8080

Start nu applikationen i en beholder ved hjælp af ' docker-compose up kommando:

docker-compose up

Vi har dækket metoderne til port forwarding i Docker.

Konklusion

For at videresende porten i Docker for at få adgang til dockerize-applikationen uden for containeren, kan brugeren enten bruge ' -s ' eller ' -offentliggøre ' valgmulighed i ' docker-løb kommandoen eller brugeren kan bruge ' havne ”-tasten i Docker-komponeringsfilen. For at få adgang til containeren på et specifikt netværk kan brugeren videresende containerporten på et netværk ved at bruge ' –netværk ' mulighed. Denne blog har demonstreret teknikkerne til at videresende porte i Docker.