Introduzione
Punto di ingresso e CMD sono istruzioni nel Dockerfile che definiscono il processo in un'immagine Docker. Puoi usarne uno o combinare entrambi a seconda di come vuoi eseguire il tuo container.
Una differenza è che, a differenza di CMD
, non puoi sovrascrivere il ENTRYPOINT
comando semplicemente aggiungendo nuovi parametri della riga di comando. Per sovrascrivere ENTRYPOINT devi modificare la docker run
comando seguendo una sintassi specifica.
In questo tutorial imparerai come sovrascrivere ENTRYPOINT usando il comando di esecuzione della finestra mobile.
Prerequisiti
- Accesso a una riga di comando
- Un utente con sudo privilegi
- Un'istanza Docker in esecuzione
- Un'immagine Docker esistente
Sostituisci ENTRYPOINT con l'esecuzione della finestra mobile
Per illustrare come ignorare questo comando, eseguiremo un contenitore che fa eco al messaggio Hello World
combinando ENTRYPOINT e CMD nel Dockerfile.
Nel Dockerfile, il ENTRYPOINT
comando definisce l'eseguibile, mentre CMD
imposta il parametro predefinito.
FROM ubuntu
MAINTAINER sofija
RUN apt-get update
ENTRYPOINT [“echo”, “Hello”]
CMD [“World”]
Se crei un'immagine da questo file e la usi per eseguire un contenitore Docker, l'output visualizza:
Puoi facilmente sovrascrivere il CMD predefinito aggiungendo il parametro desiderato alla docker run
comando:
sudo docker run [container_name] [new_parameter]
Nell'esempio seguente, abbiamo modificato il parametro CMD World
, aggiungendo Sofija
al comando. Di conseguenza, l'output mostra Hello Sofija
.
Tuttavia, potresti voler sovrascrivere l'eseguibile predefinito e, ad esempio, eseguire una shell all'interno di un contenitore. In tal caso, devi utilizzare il --entrypoint
contrassegnare ed eseguire il contenitore utilizzando la seguente sintassi:
sudo docker run --entrypoint [new_command] [docker_image] [optional:value]
Per sovrascrivere il messaggio di eco predefinito nel nostro esempio ed eseguire il contenitore in modo interattivo, utilizziamo il comando:
sudo docker run -it --entrypoint /bin/bash [docker_image]
L'output ci mostra che ora siamo all'interno del contenitore.