Docker - Life cycle di un container

in Architetture Software, Informatica

Docker – Life cycle di un container

Reading Time: 2 minutes

Il ciclo di vita di un container docker incominicia con le operazioni di creazione (create), prosegue con l’operazione di run e successivamente con le operazioni di pausa/terminazione. In questo post verranno analizzati i singoli aspetti. Riprendendo il post precedente sull’analisi architetturale di docker analizziamo il ciclo di vita di un container.

Ecco cosa succede durante i passi di istanziazione di un container:

  • l’immagine del container viene scaricata in locale (se non esiste una copia in locale)
  • viene creato il container
  • viene eseguito il container in un ambiente isoltato
  • il container viene terminato (una volta inviato il comando per terminarne l’esecuzione)

Creazione di un container

Il comando docker create, consente di creare un nuovo container a partire da un’immagine esistente:

docker create <nomeimmagine>

Il comando docker run può essere riassunto nel seguente modo:

docker run = docker create + docker start

ed esegue in maniera sequenziale le operazioni docker create e docker start.

Terminare l’esecuzione di un container

E’ possibile terminare l’esecuzione di un container utilizzando :

docker stop <containerID>

oppure

docker kill <containerID>

La differenza dei due comandi è piuttosto fine: come avviene per i processi linux che sono in ascolto sui vari signal che gli vengono inviati, anche i container docker gestiscono il SIGTERM e SIGKILL. Il comando stop permette di terminare in maniera graceful un container (eventualmente è possibile gestire le operazioni che dovranno essere eseguite in fase di chiusra), mentre il comando kill termina in maniera drastica. In entrambi i casi il segnale viene inviato al processo principale del container indicato. Inviando un segnale SIGKILL il processo che lo riceve non effettuerà alcuna operazione di chiusura/pulizia. Se il processo non risponde si rende necessario inviare un comando SIGKIKILL che verrà sempre eseguito.

Accedere ad un container

Utilizzando il comando exec è possibile eseguire un comando all’interno di un container :

docker exec -it <containerID> <command>

dove con exec viene indicato di utilizzare un comando esterno e con -it viene fornito l’input al container. Il comando da eseguire viene indicato con il parametro command.