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'.
- Com reenviar el port a Docker mitjançant Docker Compose
- Com reenviar el port a una xarxa específica
- Conclusió
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
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
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 psEn 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
Per veure les xarxes Docker, utilitzeu el ' xarxa docker ls ' comandament:
xarxa docker lsAquí, 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-imgA 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