Com reenviar el port a Docker

Com Reenviar El Port A Docker



Docker és una plataforma de dockerització molt apreciada que acobla aplicacions i programari en un entorn aïllat conegut com a contenidor. Quan s'executen aplicacions en contenidors, els usuaris solen accedir a l'aplicació en contenidors fora del contenidor. Per a aquest propòsit, els usuaris han d'aplicar la tècnica de reenviament de ports.

El reenviament de ports a Docker és un procés que ens permet exposar el port del contenidor al sistema host de Docker. Ens permet executar l'aplicació en un entorn aïllat i també fer-la accessible des de fora del contenidor en una màquina d'usuari.

Aquesta publicació demostrarà:







Com reenviar el port a Docker mitjançant l'etiqueta '-p' o '-publicar'.

Per reenviar un port a Docker, l'usuari ha de publicar el port del contenidor a l'amfitrió de Docker. Per a aquest propòsit, executeu el contenidor a l'amfitrió de docker mitjançant el ' -p ' o ' -publicar 'etiqueta a l'' Docker Run ' comandament.



Per a una demostració adequada, seguiu les instruccions següents.



Pas 1: feu Dockerfile

Primer, creeu un fitxer i definiu-ne el nom com a ' Dockerfile ”. Aquest fitxer conté les instruccions textuals per crear la plantilla del contenidor Docker. Per exemple, anem acoblant el programa Golang senzill utilitzant el fragment següent al Dockerfile:





DE Golang: 1.8

DIR. TREBALL / anar / src / aplicació

COPIA main2.go .

CÓRRA vés a construir -O servidor web.

EXPOSAR 8080

CMD [ './servidor web' ]

En el fragment donat:

  • DE ” s'utilitza per configurar la imatge base.
  • DIR. TREBALL ” defineix el directori de treball del contenidor.
  • CÒPIA ” L'ordre crearà una còpia del fitxer del programa al camí especificat pel contenidor.
  • CORRER ”l'ordre executarà l'ordre especificada al contenidor.
  • EXPOSAR ” L'ordre especifica el port on s'escoltarà el contenidor.
  • CMD ” especifica els punts executables del contenidor.

Pas 2: creeu un programa Golang

A continuació, creeu un altre fitxer anomenat ' main2.go ' i enganxeu el programa Golang que es proporciona a continuació que imprimeix una cadena senzilla al port ' 8080 ”:



paquet principal

importar (

'fmt'

'registre'

'net/http'

)

gestor de funcions ( En http.ResponseWriter, r * http.Solicitud ) {

html := `

DOCTYPE html >

< html >

< cap >

< títol > Hola Golang ! títol >

< estil >

cos {

color de fons: #D2B48C;

}

.contenidor {

alineació de text: centre;

farciment: 50px;

}

estil >

cap >

< cos >

< div classe = 'contenidor' >

< h1 > Hola ! Benvingut al tutorial LinuxHint h1 >

div >

cos >

html >`

w.Capçalera ( ) .Conjunt ( 'Tipus de contingut' , 'text/html' )

fmt.Fprint ( En , html )

}

funció principal ( ) {

http.HandleFunc ( '/' , gestor )

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

}

Pas 3: genereu la instantània del contenidor

Ara, genereu una instantània per al contenidor des del Dockerfile especificat anteriorment. Per a aquest propòsit, primer, navegueu fins al directori on es crea el fitxer Dockerfile mitjançant el ' cd ' comandament:

A continuació, genereu la nova imatge del contenidor mitjançant l'ordre donada:

construcció docker -t golang-img .

El resultat donat mostra que la imatge es crea segons el context de construcció proporcionat.

Pas 4: Reenvieu el port de l'amfitrió al port del contenidor

Ara, executeu el contenidor i reenvieu el port amfitrió al port del contenidor per accedir a l'aplicació Dockerize fora del contenidor en una màquina local. Per a això, executeu el 'docker run –name -p : ' comandament:

Docker Run --nom anar-cont -p 8080 : 8080 golang-img

Aquí, el ' -p ” s'utilitza per publicar el port d'execució del contenidor a l'amfitrió docker:

Pas 5: verificació

Per a la verificació, visualitzeu els contenidors en funcionament mitjançant ' docker ps ”:

docker ps

En el resultat següent, l'aplicació en contenidors està escoltant a les interfícies de xarxa disponibles ' 0.0.0.0 ' al port publicat ' 8080 ”. Implica que el port s'envia a l'aplicació en execució a la màquina host:

Ara, inicieu el navegador i navegueu a ' http://localhost:8080/ ” i verifiqueu si la tècnica de reenviament de ports s'aplica o no i si l'aplicació en contenidors és accessible fora del contenidor al sistema host:

Aquí hem reenviat correctament el port amfitrió al port del contenidor i l'aplicació és accessible a l'amfitrió docker.

Com reenviar el port a Docker mitjançant Docker Compose

Per reenviar el port del contenidor a l'amfitrió per accedir a l'aplicació en contenidors des de fora del contenidor, l'usuari pot utilitzar el ' port ” introdueix el fitxer de composició yaml. Docker compose és un servei Docker que ens permet executar diferents serveis i aplicacions en diferents contenidors. Utilitzant el ' docker-compose.yml ”, l'usuari també pot reenviar el port del contenidor a la màquina host i tenir una connexió d'aplicació amb el món exterior.

Consulteu el procediment següent per a il·lustracions.

Pas 1: feu un fitxer de redacció

Primer, genereu un fitxer anomenat ' docker-compose.yml ” i afegiu el contingut següent al fitxer:

versió: '3'

serveis:

web:

construir: .

ports:

- 8080 : 8080

En el fragment anterior, el ' ports ” s'utilitza per connectar l'amfitrió al port del contenidor. Aquí, el primer valor és el port amfitrió i el segon valor és el port del contenidor.

Pas 2: inicieu l'aplicació

Després d'especificar les instruccions al fitxer de redacció, inicieu l'aplicació en un contenidor mitjançant el ' docker-composar ' comandament:

docker-composar

Pas 3: verificació

Per a la verificació, enumereu els contenidors de redacció mitjançant el ' docker-compose ps ' comandament:

docker-compose ps -a

Per comprovar si el contenidor és accessible a la màquina amfitrió, navegueu fins a ' http://localhost:8080/ ” URL. Aquí, podeu veure que hem reenviat de manera efectiva el port del contenidor a l'amfitrió:

Com reenviar el port a una xarxa específica

Per reenviar un port de contenidor a una xarxa específica, l'usuari ha d'especificar la xarxa a la qual vol accedir al contenidor mitjançant el ' -xarxa ” opció. Mireu els passos indicats per a la demostració.

Pas 1: creeu una xarxa

Creeu una xarxa nova amb el ' Docker network crea ' comandament. Per defecte, aquesta xarxa utilitzarà un controlador de pont:

Docker Network crea mygo-network

Per veure les xarxes Docker, utilitzeu el ' xarxa docker ls ' comandament:

xarxa docker ls

Aquí, hem creat amb èxit ' mygo-xarxa ' que està utilitzant ' pont ” conductor:

Pas 2: Xarxa de mapes

Per executar i accedir al contenidor a la xarxa específica mitjançant la tècnica de reenviament de ports, utilitzeu l'ordre següent:

Docker Run -p 8080 : 8080 --xarxa mygo-network golang-img

A l'ordre donada, el ' -p ” opció publica el contenidor en un port especificat de la xarxa especificada. Aquí, el ' -xarxa ” s'utilitza per definir la xarxa Docker:

Per verificar-ho, torneu a navegar fins a ' http://localhost:8080 ” i comproveu si el contenidor és accessible a la xarxa especificada o no:

La sortida anterior indica que hem reenviat efectivament el port del contenidor a una xarxa específica.

Nota: Mentre utilitza la xarxa 'amfitrió', l'usuari no necessita publicar el port d'un contenidor a un altre amb el ' -p ' o ' -publicar ” opció.

Reenvia el port a una xarxa específica mitjançant Docker Compose

Afegiu el fragment següent al ' docker-compose.yml ' dossier. Al fragment següent, el ' xarxes ” s'utilitza per especificar la xarxa:

versió: '3'
serveis:

web:
construir: .
ports:
- 8080 : 8080

Ara, inicieu l'aplicació en un contenidor mitjançant el ' docker-composar ' comandament:

docker-composar

Hem tractat els mètodes de reenviament de ports a Docker.

Conclusió

Per reenviar el port a Docker per accedir a l'aplicació dockerize fora del contenidor, l'usuari pot utilitzar el ' -p ' o ' -publicar opció a l'opció Docker Run ” o l'usuari pot utilitzar l'ordre “ ports ” al fitxer de redacció de Docker. Per accedir al contenidor en una xarxa específica, l'usuari pot reenviar el port del contenidor en una xarxa mitjançant el ' –xarxa ” opció. Aquest bloc ha demostrat les tècniques per reenviar ports a Docker.