Docker è una piattaforma che aiuta gli sviluppatori a creare e distribuire applicazioni containerizzate. Aiuta a risolvere i problemi di compatibilità dei sistemi operativi fornendo ambienti virtualizzati leggeri per la gestione di tali applicazioni.

L’interfaccia a riga di comando (CLI) primaria di Docker fornisce potenti strumenti agli sviluppatori che lavorano con i container. A partire dal comando di base docker, la CLI supporta circa 60 sottocomandi, la maggior parte dei quali accetta una serie di argomenti da riga di comando per affrontare compiti diversi.

Lavorare con la CLI di Docker

Il vostro ambiente Docker potrebbe essere il motore open-source Docker Engine o l’interfaccia grafica user-friendly di Docker Desktop. La CLI sarà la vostra interfaccia principale in un ambiente Docker Engine, ma avrete accesso anche allo strumento a riga di comando se installate Docker Desktop.

Siamo convinti che anche gli utenti di Docker Desktop finiranno per utilizzare la CLI una volta acquisita familiarità con questi 20 comandi essenziali di docker.

Comandi Docker da conoscere

Scopriamo quali sono i comandi Docker che dovreste conoscere assolutamente.

1. docker system

Il comando docker system aiuta a ispezionare e gestire l’ambiente Docker. Supporta argomenti da riga di comando per eseguire attività specifiche legate alla gestione, tra cui:

  • df mostra l’utilizzo del disco
  • prune rimuove le reti, i container, le immagini o i volumi inutilizzati
  • info mostra le informazioni relative al sistema
  • events visualizza un registro degli eventi di sistema in tempo reale

Di seguito è riportato il prompt iniziale dopo l’esecuzione di docker system prune.

Screenshot: il comando docker system prune.
Output di docker system prune.

2. docker context

Questo comando aiuta a navigare e a configurare diversi contesti. In Docker, i contesti includono nomi, informazioni sulla sicurezza del livello di trasporto, configurazioni di endpoint e orchestratori.

Alcuni degli argomenti di docker context:

  • ls visualizza i dettagli del contesto predefinito
  • inspect [CONTEXT} ispeziona un contesto specificato
  • create [CONTEXT] crea un nuovo contesto
  • use [CONTEXT] passa da un contesto all’altro

Di seguito è riportato un esempio di output di docker context ls:

Screenshot: il comando docker context.
Output di docker context ls.

3. docker pause e unpause

Il comando docker pause blocca i processi attivi di un container. Per eseguirlo, dovete specificare il nome del container, come mostrato di seguito:

docker pause [CONTAINER]

Ecco un esempio dell’output che potete aspettarvi dopo aver messo in pausa un container.

Screenshot: il comando docker pause.
Output di docker pause.

Il comando docker unpause riprende i processi del container in pausa. Come per il comando precedente, dovete specificare il nome del container, come mostrato di seguito:

docker unpause [CONTAINER]

Di seguito è riportato un esempio dell’output che potete aspettarvi dopo aver messo in pausa un container.

Screenshot: il comando docker unpause.
Output di docker unpause.

4. docker rm

Questo comando rimuove container, volumi e reti. Permette di selezionare il componente da rimuovere in base ai suoi attributi. Ad esempio, potete rimuovere forzatamente i container in esecuzione o tutti i container specificati:

docker rm [CONTAINER] rimuove il container il cui nome è specificato. L’output di questo comando è riportato nella schermata sottostante.

Screenshot: il comando docker rm command.
L’output di docker rm.

5. docker rmi

Questo comando viene utilizzato per rimuovere le immagini. Potete rimuovere una singola immagine o più immagini contemporaneamente. Potete descrivere l’immagine da rimuovere utilizzando l’ID breve o l’ID lungo. Questo comando è importante per mantenere il nodo host pulito ed efficiente.

Il comando per la rimozione delle immagini utilizza questa struttura:

docker rmi [IMAGE ID]

Di seguito è riportato un esempio del suo output.

Screenshot: il comando docker rmi.
L’output di docker rmi.

6. docker volume

Questo comando permette di gestire i volumi in Docker. Potete usarlo per creare, rimuovere, elencare e ispezionare i volumi.

Alcuni degli argomenti di docker volume sono:

  • create [OPTIONAL NAME] crea un nuovo volume. Potete specificare il nome del volume o lasciare che Docker generi un nome casuale.
  • ls elenca i volumi disponibili
  • inspect [NAME] mostra informazioni dettagliate sul volume.
  • rm [NAME] rimuove un volume da Docker.

Di seguito è riportato un esempio di output dopo la creazione di un volume.

Screenshot: il comando docker volume create.
L’output di docker volume create.

7. ricerca docker

Utilizzate questo comando per cercare le immagini da Docker Hub, che potrete poi eseguire come container sul vostro computer. Permette di accedere alle immagini del registro di Docker Hub senza visitare il sito web.

Il comando segue questa struttura: docker search. Potete specificare i nomi delle immagini che state cercando o creare un filtro.

Di seguito è riportato un esempio dell’output della seguente query:

docker search --filter is-official=true --filter stars=500 mysql
Screenshot: il comando docker search.
L’output di docker search.

8. docker push

Il comando docker push permette di condividere le vostre immagini nel registro di Docker Hub o in un repository privato.

La struttura del comando è:

docker push [OPTIONS] NAME[:TAG]

[OPTIONS] permette di impostare -disable-content-trust.

Per impostazione predefinita, questo valore è vero e non è obbligatorio includerlo.

NAME[:TAG] richiede l’utilizzo del nome del registro, del repository e del tag image.

Di seguito è riportato un esempio dell’output di docker push.

Screenshot: il comando docker push.
L’output docker push.

9. docker pull

Questo comando scarica un’immagine Docker da un repository in un registro pubblico o privato.

Il comando funziona in questo modo:

docker pull [OPTIONS] NAME[:TAG|@DIGEST]

Questo comando permette di utilizzare immagini esistenti invece di crearne di nuove ogni volta che dovete creare un’applicazione containerizzata.

L’esempio seguente mostra l’output di un comando docker pull:

Screenshot: il comando docker pull.
L’output docker pull.

10. docker ps

Per impostazione predefinita, questo comando visualizza l’elenco di tutti i container in esecuzione. Tuttavia, potete aggiungere un flag per elencare i container in base ad attributi come le dimensioni dell’utilizzo del disco, i container collegati e le etichette.

Il comando segue la struttura seguente:

docker ps [OPTIONS]

Alcuni dei suoi argomenti sono:

  • -a visualizza un elenco di container in esecuzione e usciti
  • -s visualizza la dimensione su disco e la dimensione virtuale di ogni container

Potete usare i due argomenti insieme in questo modo:

docker ps -as

Di seguito è riportato un esempio dell’output di un comando docker ps.

Screenshot: il comando docker process status.
Alcuni dei risultati del comando docker ps.

11. docker tag

Utilizzate questo tag per aggiungere metadati, come la versione, alla vostra immagine. I tag vengono solitamente creati al momento della creazione dell’immagine, ma il comando docker tag permette di aggiungere un tag in un secondo momento, creando essenzialmente un alias per l’immagine di destinazione.

Questo comando segue la struttura:

docker tag SOURCE_IMAGE[:TAG] TARGET_IMAGE[:TAG]

Nell’esempio seguente, elenchiamo le immagini con il nome “redis”. Dopo aver contrassegnato l’immagine con un numero di versione (“2.0”), il nuovo alias e l’immagine originariamente contrassegnata appaiono nell’elenco.

Screenshot: il comando docker tag.
L’output di docker tag.

12. docker rename

Usate questo comando per rinominare un container. È utile quando si hanno diversi container e si vuole differenziarli in base al loro scopo.

Questo comando segue la struttura seguente:

docker rename [OLD_NAME] [NEW_NAME]

Di seguito è riportato un esempio di output prima e dopo un comando docker rename.

Screenshot: il comando docker rename.
L’output di docker rename.

13. docker commit

Questo comando permette di creare nuove immagini dopo le modifiche apportate ai file di un container. È importante perché permette di eseguire il debug di un container utilizzando una shell interattiva.

Questo comando segue la struttura:

docker commit [CONTAINER_ID] [name-of-new-image]

Di seguito sono riportati un esempio e un output del comando docker commit.

Screenshot: il comando docker commit.
L’output docker commit.

14. docker network

È un comando di gestione della rete che permette di creare potenti applicazioni collegando servizi e container.

Il comando ha la seguente struttura:

docker network [OPTIONS]

I suoi argomenti includono:

  • connect per collegare i container alle reti
  • create per costruire nuove reti
  • disconnect per disconnettere i container in esecuzione dalle reti
  • rm per rimuovere reti singole o multiple

Di seguito è riportato l’output di un comando docker network create.

Screenshot: il comando docker create.
L’output di docker network create.

15. docker history

Questo comando fornisce la cronologia di un’immagine specificata, aiutandovi a capire come è stata creata e visualizzando le dimensioni dell’immagine.

Il comando ha la seguente struttura:

docker history [IMAGE]

Di seguito, vediamo la cronologia associata all’immagine redis:latest.

Screenshot: il comando docker history.
L’output docker history.

16. docker update

Questo comando permette di aggiornare la configurazione di un container. Aiuta a evitare che i container consumino troppe risorse dell’host Docker. Il formato del comando è:

docker update [OPTIONS] [CONTAINER]

Alcune delle sue opzioni sono:

  • --restart aggiorna il criterio di riavvio di un container
  • --memory imposta il limite di memoria di un container
  • --cpus imposta il numero di CPU allocate

Di seguito è riportato un esempio di output di un comando docker update.

Screenshot: il comando docker update.
L’output di docker update.

17. docker plugin install

Questo comando permette di gestire i plugin. È fondamentale perché permette di aggiungere nuove funzionalità senza alterare le configurazioni dell’host Docker.

Gli argomenti di docker plugin includono:

  • create per creare nuovi plugin
  • enable per abilitare i plugin installati
  • install per installare nuovi plugin
  • rm per rimuovere uno o più plugin
  • ls per visualizzare un elenco di plugin

Di seguito, utilizziamo docker plugin install per aggiungere un plugin al nostro ambiente. Poi, usiamo docker plugin ls per rivelare il suo stato.

Screenshot: il comando docker plugin.
L’output di docker plugin ls.

18. docker container

Questo comando permette di gestire i container. Si usa per eseguire azioni come la creazione, l’eliminazione e la rimozione dei container, tra le altre cose.

Le opzioni di docker container includono:

  • create per creare un container
  • commit per creare una nuova immagine dopo le modifiche apportate a un container
  • exec per eseguire comandi all’interno di un container in esecuzione
  • kill per arrestare un container in esecuzione
  • ls per visualizzare un elenco di container all’interno di un host Docker
  • restart per riavviare un container
  • run per creare un container da un’immagine ed eseguirlo
  • rm per rimuovere un container da un host Docker

Di seguito è riportato un esempio di output di un comando docker container.

Screenshot: il comando docker container.
L’output di docker container restart.

19. docker logs

Questo comando recupera i log di un container. Fornisce informazioni sulle operazioni di un container, che possono essere essenziali durante il debug.

Di seguito è riportato un esempio di output di un comando docker logs.

example-docker-command-logs
L’output di docker logs.

20. docker swarm

Questo comando aiuta a gestire uno swarm Docker, ovvero un gruppo di macchine (virtuali o fisiche) che eseguono Docker e sono configurate per lavorare insieme in un cluster. Questo comando semplifica la configurazione di uno swarm e i suoi vantaggi.

Di seguito sono riportate alcune delle opzioni di docker swarm:

  • init per avviare uno swarm
  • join per unirsi a uno swarm
  • leave per abbandonare uno swarm
  • update per aggiornare uno swarm

Di seguito sono riportati un esempio e l’output di un comando docker swarm init.

example-docker-command-swarm-init
L’output di docker swarm init.

Riepilogo

Docker è uno strumento efficace per creare e gestire applicazioni containerizzate. I comandi di facile comprensione della sua CLI facilitano la creazione e la manipolazione di applicazioni anche complesse.

La padronanza dei 20 comandi di cui sopra può accelerare lo sviluppo delle vostre applicazioni containerizzate.

In Kinsta, molti clienti dell’Hosting WordPress gestito utilizzano i nostri strumenti DevKinsta basati su Docker-Desktop per sviluppare e distribuire i loro siti web.

I clienti del servizio di Hosting di Applicazioni di Kinsta possono lavorare con Docker e il loro provider Git preferito (Bitbucket, GitHub o GitLab) per controllare la versione del codice sorgente e la distribuzione rapida di applicazioni containerizzate.

Steve Bonisteel Kinsta

Steve Bonisteel è un Technical Editor di Kinsta che ha iniziato la sua carriera di scrittore come giornalista della carta stampata, inseguendo ambulanze e camion dei pompieri. Dalla fine degli anni '90 si occupa di tecnologia legata a Internet.