Comandi Docker di base

Completato

Le sezioni seguenti illustrano i comandi Docker di base necessari per scaricare un'immagine e avviare un contenitore.

Download di un'immagine

Per scaricare un'immagine, è necessario usare il comando docker pull, dove è possibile specificare il nome dell'immagine. L'immagine è archiviata in un repository, pertanto occorre fornire il nome completo.

L'esempio seguente mostra il comando docker pull:

docker pull <image_name>

Per scaricare l'immagine principale Windows Server, usare la seguente logica:

docker pull mcr.microsoft.com/windows/servercore:ltsc2019

L'LTSC (Long-Term Servicing Channel) viene normalmente aggiornato ogni tre anni. È disponibile una versione LTSC per Windows Server 2016 e per Windows Server 2019, che indica la piattaforma su cui eseguirla. Anche il sistema operativo di base sarà una versione Windows Server 2019.

Fino all'estate 2020, Microsoft ha fornito immagini separate per Business Central, ma successivamente le ha sostituite con artefatti. Le diverse immagini/artefatti di Business Central verranno spiegati nell'unità successiva.

Con queste immagini, è possibile scaricare l'ultima sandbox di Business Central disponibile da eseguire su Windows Server 2019.

docker pull mcr.microsoft.com/businesscentral/sandbox:ltsc2019

Quando si scarica un'immagine per la prima volta, l'operazione potrebbe richiedere alcuni minuti o ore (a seconda della velocità di connessione). Ogni immagine è costruita con blocchi diversi che possono essere riusati quando si scarica un'altra immagine. Se anche un'altra immagine utilizza la versione principale di Windows Server 2019, tale immagine può riusare il blocco già scaricato.

Creazione di un contenitore

Dopo aver scaricato l'immagine, è il momento di creare un contenitore. Un contenitore è un'istanza di un'immagine. È possibile creare un'immagine con il comando docker run:

docker run <image_name> --name <container_name>

Con il comando docker run, è possibile avviare una nuova istanza dell'immagine da fornire come parametro. Facoltativamente, è possibile nominare questa istanza con l'opzione --name; altrimenti, sarà Docker a generare un nome (composto sempre da un aggettivo e dal nome di una persona, ad esempio "awesome_john"). Consigliamo di usare lettere minuscole per il nome.

docker run mcr.microsoft.com/businesscentral/sandbox:ltsc2019 --name bcdev

Il comando docker run accetta molte altre opzioni che non verranno illustrate in questa unità. Un'opzione da considerare è l'opzione -ti, usata per creare un contenitore in modalità interattiva. Questa opzione avvia un terminale all'interno del contenitore per l'interazione con il contenitore stesso. L'utilizzo di cmd come parametro avvia un prompt dei comandi all'interno del contenitore e consente quindi di interagire usando i comandi.

docker run -ti mcr.microsoft.com/windows/servercore:ltsc2019 cmd

Visualizzazione dei contenitori

Per visualizzare i contenitori in esecuzione, è possibile usare il comando docker ps. Se si specifica l'opzione -a, si ottiene un elenco che mostra tutti i contenitori, anche quelli che non sono in esecuzione.

docker ps
docker ps -a

Ogni contenitore è identificato con un ID contenitore e un nome. Per eseguire altri comandi su un contenitore, è possibile usare l'ID o il nome. L'elenco mostra anche l'immagine su cui si basa il contenitore.

CONTAINER ID  IMAGE                                              NAMES
321046e7faca  mcr.microsoft.com/windows/servercore:ltsc2019      awesome_john
11a1be01305d  mcr.microsoft.com/businesscentral/sandbox:ltsc2019 bcdev

Avvio e arresto di un contenitore

Quando si utilizza un contenitore, non è necessario usare il comando docker run per avviarlo poiché questa azione creerebbe ogni volta un nuovo contenitore. Un contenitore si avvia tramite il comando docker start e si arresta tramite il comando docker stop.

docker start 11a1be01305d
docker stop 11a1be01305d

Rimozione di un contenitore

Per eliminare un contenitore, operazione che non elimina l'immagine, è possibile usare il comando docker rm. È possibile eliminare solo contenitori che non sono in esecuzione. Pertanto, per rimuovere un contenitore in esecuzione, è necessario arrestarlo con il comando docker stop e usare poi il domando docker rm. È inoltre possibile usare l'opzione -f sul comando docker rm per forzare la rimozione.

docker rm 11a1

Uso dell'ID o del nome del contenitore

L'esempio precedente mostra che viene specificata solo una parte dell'ID contenitore. In realtà, è sufficiente specificare una parte dell'ID contenitore che identificherà un contenitore in modo univoco. Gli esempi precedenti mostrano due contenitori: uno con ID 321046e7faca e uno con ID 11a1be01305d. Già la prima lettera dell'ID dei due contenitori è diversa.

Con questa prima lettera, è possibile usare i comandi seguenti:

docker start 1
docker stop 1
docker rm 1

È inoltre possibile usare il nome al posto dell'ID:

docker start bcdev
docker stop bcdev
docker rm bcdev

Uso dell'estensione Docker per Visual Studio Code

Microsoft ha rilasciato un'estensione per Visual Studio Code che può aiutare a creare e gestire i contenitori e a eseguirne il debug. In Visual Studio Code, è possibile cercare Docker nella scheda Estensioni. Docker per Visual Studio Code.

L'estensione fornisce un'eccellente panoramica delle immagini, dei contenitori e dei registri. Inoltre, questa estensione consente di creare i volumi in modo semplice.

Screenshot dell'estensione Docker in Visual Studio Code.