Docker Cheat Sheet

Alcuni parametri comuni dei comandi docker

Indice

Ecco una Docker cheat sheet che copre i comandi più importanti e i concetti da installare fino all’esecuzione dei contenitori e alla pulizia:

logo Docker

Installazione

Su Ubuntu

sudo apt install apt-transport-https ca-certificates curl software-properties-common
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
sudo add-apt-repository "deb [arch=amd64] https://download.docker.com/linux/ubuntu bionic stable"
sudo apt update
sudo apt install docker-ce
sudo systemctl start docker

Installazione di Docker Compose

sudo curl -L "https://github.com/docker/compose/releases/download/1.24.0/docker-compose-$(uname -s)-$(uname -m)" -o /usr/local/bin/docker-compose
sudo chmod +x /usr/local/bin/docker-compose
sudo ln -s /usr/local/bin/docker-compose /usr/bin/docker-compose
docker-compose --version

Comandi Generali di Docker

Versione e Informazioni del Sistema

docker version          # Mostra le versioni del CLI e del demone Docker
docker system info      # Elenco dei dati sull'ambiente Docker
docker help             # Visualizza l'indice dell'aiuto
docker <command> --help # Visualizza le informazioni sull'aiuto per un comando specifico

Login e Logout

docker login            # Login su Docker Hub
docker logout           # Logout da Docker Hub

Gestione delle Immagini

Elenco delle Immagini

docker images           # Elenco di tutte le immagini
docker images -a        # Elenco di tutte le immagini, comprese quelle intermedie

Pull delle Immagini

docker pull <image-name:version> # Scarica un'immagine da Docker Hub

Costruzione delle Immagini

docker build -t <image-name> . # Costruisci un'immagine dal Dockerfile nella directory corrente
docker build -f <Dockerfile-path> -t <image-name> . # Costruisci un'immagine da un Dockerfile specifico
docker build --build-arg foo=bar . # Costruisci un'immagine con argomenti di costruzione
docker build --pull . # Scarica le versioni aggiornate delle immagini riferite nelle istruzioni FROM
docker build --quiet . # Costruisci un'immagine senza emettere output

Etichettatura e Push delle Immagini

docker tag <local-image-name> <username>/<preferred-image-name>
docker push <username>/<preferred-image-name>

Rimozione delle Immagini

docker rmi <image-name>        # Rimuovi un'immagine specifica
docker image prune             # Rimuovi le immagini non utilizzate
docker image prune -a          # Rimuovi tutte le immagini non utilizzate

Rimozione delle immagini orfane

docker rmi $(docker images --filter "dangling=true" -q --no-trunc)

Rimozione dell’etichetta

docker rmi repository/image-name:tag

Gestione dei Contenitori

Esecuzione dei Contenitori

docker run -itd --name <container-name> <image-name> # Esegui un contenitore in modalità detaccata
docker run -it -p <host-port>:<docker-port> <image-name> # Esegui un contenitore con mappatura delle porte
docker run -it --name <container-name> <image-name> # Esegui un contenitore interattivamente

Elenco dei Contenitori

docker ps                  # Elenco dei contenitori in esecuzione
docker ps -a               # Elenco di tutti i contenitori
docker ps -s               # Elenco dei contenitori in esecuzione con utilizzo CPU e memoria

Avvio, Arresto e Riavvio dei Contenitori

docker start <container-name>   # Avvia un contenitore arrestato
docker stop <container-name>    # Arresta un contenitore in esecuzione
docker restart <container-name> # Riavvia un contenitore

Rimozione dei Contenitori

docker rm <container-name>      # Rimuovi un contenitore arrestato
docker rm -f <container-name>   # Rimuovi forzatamente un contenitore
docker stop $(docker ps -a -q) && docker rm $(docker ps -a -q) # Rimuovi tutti i contenitori

rimuovi tutti i contenitori arrestati

docker container prune

Collegamento ai Contenitori

docker attach <container-name>  # Collegati a un contenitore in esecuzione
docker exec -it <container-name> bash # Esegui un comando in un contenitore in esecuzione in modo interattivo

Ispezione dei Contenitori

docker inspect <container-name> # Ispeziona un contenitore
docker logs <container-name>    # Visualizza i log di un contenitore
docker port <container-name>    # Mostra le mappature delle porte di un contenitore

Gestione delle Reti

docker network ls            # Elenco di tutte le reti
docker network create <network-name> # Crea una nuova rete
docker network rm <network-name>    # Rimuovi una rete

Gestione dei Volumi

docker volume ls             # Elenco di tutti i volumi
docker volume create <volume-name> # Crea un nuovo volume
docker volume rm <volume-name>    # Rimuovi un volume
docker run -v <host-path>:<container-path> <image-name> # Monta un volume

Docker Compose

Comandi di Base

docker-compose up           # Avvia i servizi definiti nel file docker-compose.yml
docker-compose up -d        # Avvia i servizi in modalità detaccata
docker-compose down         # Arresta e rimuovi i servizi
docker-compose ps           # Elenco dei servizi in esecuzione
docker-compose logs         # Visualizza i log dei servizi
docker-compose start        # Avvia i servizi
docker-compose stop         # Arresta i servizi
docker-compose pause        # Pausa i servizi
docker-compose unpause      # Riprendi i servizi

Comandi Dockerfile

Costruisci un’immagine da un Dockerfile

docker build -t <image-name> <Dockerfile-path> # Costruisci un'immagine da un Dockerfile

Esempio di Dockerfile

FROM <base-image>
RUN <command>
COPY <source> <destination>
EXPOSE <port>
CMD ["<command>", "<argument>"]

Sicurezza e Segreti

Segreti Docker

docker secret create <secret-name> <file> # Crea un segreto
docker secret ls                         # Elenco di tutti i segreti
docker secret rm <secret-name>          # Rimuovi un segreto

Sicurezza Docker

  • Utilizza i segreti Docker per gestire centralmente i dati sensibili e trasmetterli in modo sicuro ai contenitori.
  • I segreti sono crittografati durante la trasmissione e a riposo in un swarm Docker.

Pulizia

Rimozione delle risorse non utilizzate

docker system prune          # Rimuovi i dati non utilizzati (immagini, contenitori, reti, volumi)
docker image prune           # Rimuovi le immagini non utilizzate
docker container prune       # Rimuovi i contenitori non utilizzati
docker network prune         # Rimuovi le reti non utilizzate
docker volume prune          # Rimuovi i volumi non utilizzati

Rimozione delle immagini non etichettate

A volte, dopo una compilazione molto buona, c’è un’immagine simile a questa proveniente dal comando docker images:

molte immagini non etichettate

per rimuovere quelle immagini con etichette :

docker rmi $(docker images --filter “dangling=true” -q --no-trunc)

quello sopra è obsoleto e non compatibile. Utilizza

docker system prune

chiederà:

AVVERTENZA! Questo rimuoverà:
	- tutti i contenitori arrestati
	- tutti i volumi non utilizzati da almeno un contenitore
	- tutte le reti non utilizzate da almeno un contenitore
	- tutte le immagini orfane

potresti decidere di dire Sì a questa avvertenza…

Questa cheat sheet copre i comandi essenziali e i concetti necessari per gestire i contenitori, le immagini, le reti, i volumi e altro ancora di Docker. Per un’immersione più approfondita, riferirsi alle guide e ai tutorial dettagliati disponibili online.