Utilitzant Dockerfile per exposar ports

Using Dockerfile Expose Ports



És molt fàcil crear una imatge Docker personalitzada a partir d’imatges Docker existents mitjançant Dockerfile . Normalment la gent utilitza una imatge base mínima com alpí o bé ubuntu / debian amb aquest propòsit. Diguem que voleu crear una imatge personalitzada de Docker de la vostra aplicació web preferida escrita a NodeJS. L'aplicació s'executarà al port 8080 . De manera predeterminada, no podreu accedir a l'aplicació web del port 8080 de la màquina amfitrió. Haureu de dir a Docker que voleu exposar o obrir el port 8080 per poder accedir-hi des del vostre equip amfitrió.

En aquest article, us mostraré com exposar els ports mitjançant Dockerfile amb un exemple del món real. Comencem.







En primer lloc, hem de crear un directori de projectes. En aquest directori, heu de conservar tots els fitxers del projecte i un fitxer Dockerfile .



Executeu l'ordre següent per crear un directori del projecte myapp / al directori HOME dels vostres usuaris i aneu-hi:



$mkdir~/myapp&& cd~/myapp

Preparació de l'aplicació web:

Ara creeu un directori src / dins del ~ / myapp / directori amb l'ordre següent:

$mkdirsrc

A la src / directori, es conservarà tot el codi font de la meva aplicació NodeJS.

Simplement crearé un senzill app.js arxiu al fitxer src / directori i executar un servidor web senzill al port 8080 només per demostració.

El src / app.js conté les següents línies de codis:

Escriptura de fitxers Docker i ports d'exposició:

Ara creeu un fitxer Dockerfile al ~ / myapp directori amb l'ordre següent:

$tocarDockerfile

Ara escriviu les línies següents al fitxer Dockerfile i deseu-lo. Més endavant parlaré del significat d’aquestes línies.

Aquí, DES de alpí: 3,8 significa, utilitzeu el fitxer alpí: 3,8 La imatge Docker com a base per a la nova imatge que construirem a partir d’aquesta Dockerfile .

Actualització de l'aplicació RUN significa, executeu el fitxer actualització apk a la imatge base Docker alpí: 3,8 .

RUN apk add -no-cache nodejs significa, executeu el fitxer apk afegir per instal·lar el llenguatge de programació NodeJS a alpí: 3,8 Imatge base Docker.

COPIA ./src / app vol dir, copieu tots els fitxers del fitxer ~ / myapp / src al directori / app directori de la nova imatge de Docker que crearem amb el fitxer Dockerfile .

CMD [/ usr / bin / node, /app/app.js] significa, executeu el fitxer /app/app.js fitxer del contenidor nou mitjançant node binari situat a / usr / bin / node .

Finalment, a EXPOSEU 8080 / tcp significa, exposar o obrir el port TCP 8080 a l'ordinador amfitrió.

Creació d'una imatge personalitzada de Docker mitjançant Dockerfile:

Ara fem una imatge personalitzada de Docker node alpí: v1 utilitzant el Dockerfile que acabem de crear.

En primer lloc, assegureu-vos que sou a ~ / myapp / directori i, a continuació, executeu l'ordre següent per crear la vostra imatge Docker personalitzada node alpí: v1 :

$docker build-tnode alpí: v1.

Com podeu veure, la imatge personalitzada de Docker node alpí: v1 s'està creant. La imatge i els paquets base de Docker necessaris s’estan extret d’Internet.

Com podeu veure, la imatge personalitzada de Docker node alpí: v1 es crea correctament.

Prova de la imatge Docker personalitzada:

Ara podem provar la imatge personalitzada de Docker node alpí: v1 molt fàcilment. Tot el que hem de fer és crear un contenidor a partir de node alpí: v1 imatge.

Executeu l'ordre següent per crear un contenidor Docker www des del node alpí: v1 Imatge Docker:

$docker run-d -és --nomwww alpine-node: v1

El contenidor www es crea.

Ara anem a esbrinar l'adreça IP del www Contenidor Docker amb l'ordre següent:

$docker inspecciona www| adherènciaadreça

Com podeu veure, en el meu cas, l’adreça IP és 172.17.0.3 . Per tant, l’aplicació NodeJS que vaig escriure hauria de ser accessible des del navegador web del port 8080 d'aquesta adreça IP.

Voila! Puc accedir al port 8080 dels meus www Contenidor Docker.

Bàsicament, és així com exposeu certs ports a les vostres imatges personalitzades de Docker que construireu Dockerfile .

Exposició de ports TCP i UDP mitjançant Dockerfile:

A la secció anterior d'aquest article, us vaig mostrar com exposar un port TCP mitjançant un fitxer Dockerfile .

Podeu exposar fàcilment un port TCP (diguem que el port TCP 53 ) al vostre Dockerfile amb la línia següent:

EXPOSAR53/tcp

També podeu exposar un port UDP (diguem-ne port UDP 53 ) amb la línia següent al vostre Dockerfile :

EXPOSAR53/udp

Podeu exposar els ports TCP i UDP alhora amb les línies següents al vostre fitxer Dockerfile :

EXPOSAR53/tcp
EXPOSAR53/udp

Si no especifiqueu quin protocol (TCP o UDP) heu d’utilitzar, s’utilitzarà TCP per defecte. Per exemple, si escriviu la línia següent al vostre fitxer Dockerfile :

EXPOSAR53

Llavors Docker assumirà que voleu utilitzar el port TCP 53.

Exposició de diversos ports mitjançant Dockerfile:

Suposem que voleu crear una imatge Docker de pila MEAN personalitzada. En aquest cas, executareu un servidor HTTP en algun port (diguem el port TCP 80 o 8080), un servidor FTP que s’executa al port TCP 21, un servidor de base de dades SQL (diguem MySQL) que s’executa al port TCP 3306, o servidor de base de dades NoSQL (posem per cas MongoDB) que s’executa al port TCP 27017 o 27018, un servidor SSH que s’executa al port TCP 22. Això és un munt de ports!

La bona notícia és; podeu exposar tants ports com necessiteu a la vostra imatge Docker personalitzada creada amb Dockerfile .

Els ports de l'exemple anterior es poden exposar amb les línies següents al vostre fitxer Dockerfile :

EXPOSAR80/tcp
EXPOSAR8080/tcp
EXPOSAR21/tcp
EXPOSAR22/tcp
EXPOSAR3306/tcp
EXPOSAR27017/tcp
EXPOSAR27018/tcp

Si voleu, podeu deixar l’especificació del protocol ja que Docker utilitza TCP per defecte i fer el mateix amb les línies següents al vostre Dockerfile :

EXPOSAR80
EXPOSAR8080
EXPOSAR21
EXPOSAR22
EXPOSAR3306
EXPOSAR27017
EXPOSAR27018

Si ho necessiteu, podeu barrejar els ports TCP i UDP al vostre Dockerfile . Per exemple, si executeu el servidor DNS (que s’executa al port UDP 53), juntament amb l’exemple anterior, afegiríeu les línies següents al vostre Dockerfile .

EXPOSAR80
EXPOSAR8080
EXPOSAR21
EXPOSAR22
EXPOSAR53/udp
EXPOSAR3306
EXPOSAR27017
EXPOSAR27018

Per tant, és així com s’exposen els ports Dockerfile . Per obtenir més informació Dockerfile i exposant ports mitjançant Dockerfile , llegir el Dockerfile guia de referència a https://docs.docker.com/engine/reference/builder/#expose

Gràcies per llegir aquest article.