Punt d'entrada Docker

Punt D Entrada Docker



En aquest tutorial, coneixerem la instrucció ENTRYPOINT a Dockerfile que ens permet definir com ha d'iniciar i executar l'aplicació un contenidor. Aquesta és una instrucció essencial, ja que us impedeix iniciar sessió al contenidor per iniciar les aplicacions. En canvi, el contenidor pot invocar les instruccions definides automàticament.

Docker ENTRYPOINT

La instrucció ENTRYPOINT en un Dockerfile ens permet especificar l'ordre o l'script que s'executa quan s'inicia el contenidor des de la imatge.

Aquest és un element essencial per definir el comportament d'un contenidor Docker, ja que determina què fa el contenidor a l'inici.







Sintaxi:

La instrucció ENTRYPOINT pot tenir diferents formats en funció de les accions que s'han d'executar. El format de sintaxi compatible inclou:



Ordre ENTRYPOINT param1 param2...

La segona sintaxi és la següent:



PUNT D'ENTRADA [ 'executable' , 'param1' , 'param2' , ...]

El primer format de sintaxi segueix el sistema d'execució de l'intèrpret d'ordres, que és similar al que passa quan executeu una ordre a l'intèrpret d'ordres del sistema.





El segon format, també conegut com a mètode 'exec', es recomana perquè proporciona versatilitat i és fàcil de personalitzar per a l'aplicació.

En ambdues sintaxis, es representen els paràmetres següents:



  1. Ordre o executable: defineix l'ordre principal que s'executarà al contenidor.
  2. Param1, param2: defineix els paràmetres opcionals que es passen a l'ordre.

Ús bàsic

Comencem amb un exemple bàsic per demostrar com utilitzar la instrucció ENTRYPOINT dins d'un Dockerfile. Suposem que tenim un script de Python anomenat 'init.py' que imprimeix un missatge de benvinguda a la consola.

Podem crear una imatge de Docker per executar aquest script quan el contenidor s'inicializa mitjançant la instrucció ENTRYPOINT de la següent manera:

DE Python: 3.12

WORKDIR /app

CÒPIA . /app

PUNT D'ENTRADA [ 'python3' , 'init.py' ]

En aquest cas, utilitzant la instrucció ENTRYPOINT, diem al contenidor que executi l'script de Python després de la inicialització.

A continuació, podem crear la imatge des del Dockerfile amb l'ordre següent:

$ docker build -t init-docker .

A continuació, executeu el contenidor des de la imatge de la següent manera:

$ docker executeu init-docker

Això hauria de crear el contenidor a partir de la imatge especificada i executar el codi que es defineix al fitxer 'init.py'.

Establiment dels arguments

També passem els arguments a l'ordre ENTRYPOITN tal com es mostra al codi d'exemple següent:

PUNT D'ENTRADA [ 'python3' , 'init.py' ] \

CMD [ 'Hola, Docker!' ]

L'entrada CMD ens permet establir un argument predeterminat tret que se substitueixi.

ENTRYPOINT amb Scripts

Tot i que l'ENTRYPOINT s'utilitza principalment amb un executable, també el podem utilitzar per executar cap binaris executable, com ara scripts de shell.

Per exemple, al codi següent, utilitzem la instrucció ENTRYPOINT per executar un script 'run.sh' que estableix les variables d'entorn abans d'executar l'aplicació:

DES DE gratuït: 22.04

CÒPIA executada. sh /usr/local/bin/

RUN chmod +x /usr/local/bin/run. sh

PUNT D'ENTRADA [ 'run.sh' ]

El Dockerfile donat és relativament senzill. Copia el fitxer 'run.sh', el converteix en un executable i el defineix com a punt d'entrada predeterminat per al contenidor.

Execució avançada d'ordres amb ENTRYPOINT

També fem servir el format shell per executar ordres més complexes a la instrucció ENTRYPOINT. Un exemple és el següent:

DES DE gratuït: 22.04

eco d'ENTRYPOINT 'Executant el contenidor' && \

mkdir /app && \

cd /aplicació && \

tocar dossier . txt && \

eco 'El contenidor està llest'

En aquest cas, definim un conjunt d'ordres per executar quan s'inicia el contenidor.

Tot i que l'especificació de diverses ordres funciona, el millor és evitar incloure instruccions complexes a l'ENTRYPOINT. De la mateixa manera, eviteu executar els processos en segon pla al contenidor ENTRYPOINT.

Conclusió

En aquest tutorial, vam explicar com podeu utilitzar la instrucció ENTRYPOINT en un Dockerfile per definir les operacions que s'han d'executar quan s'inicia un contenidor.