Guida alle immagini Docker: come eliminare le immagini Docker, interrompere i contenitori e rimuovere tutti i volumi

Docker è stato ampiamente adottato ed è un ottimo veicolo per distribuire un'applicazione nel cloud (o qualche altra infrastruttura pronta per Docker). È anche utile per lo sviluppo locale. È possibile avviare rapidamente applicazioni complesse, svilupparle isolatamente e ottenere comunque ottime prestazioni.

Ecco i comandi più importanti per utilizzare Docker nella tua attività quotidiana in modo efficiente.

Elenca tutte le immagini Docker

docker images 

Nel mio caso, ho 3 immagini installate:

  • MySQL, versione 8.0.19, quella contrassegnata come ultima versione
  • e Cassandra con l'ultima versione.

Per ottenere maggiori informazioni su un'immagine, puoi esaminarla:

docker inspect mysql:latest

Ciò restituirà un elenco di informazioni. In alternativa, puoi anche utilizzare l'ID immagine per ottenere le informazioni:

docker inspect 3a5e53f63281

L'output può essere travolgente. Pertanto, esiste un'opzione utile per filtrare determinate informazioni:

docker inspect --format='{{.RepoTags}} {{.Config.Image}}' 3a5e53f63281

Rimuovi le immagini Docker

Una singola immagine può essere rimossa da:

docker rm mysql:latest

Nel mio caso, l'immagine è ancora contrassegnata con mysql: 8.0.19 . Pertanto, per rimuoverlo completamente, devo rimuovere anche un altro tag di versione:

docker rm mysql:8.0.19

Per rimuovere l'immagine direttamente, è più facile eliminare l'immagine per ID immagine:

docker image rm 3a5e53f63281 -f

L'opzione -f forza l'esecuzione, perché altrimenti si otterrebbe un errore se l'immagine è referenziata da più di 1 tag.

Avvia un'immagine Docker

Un'immagine può essere avviata in primo piano:

docker run cassandra

Se l'immagine non esiste, verrà scaricata. È possibile interrompere l'esecuzione premendo CTRL + C . Puoi anche eseguirlo in background aggiungendo l' opzione -d :

docker run -d mysql

Se il contenitore viene avviato in background, riceverai l'ID del contenitore.

Per impostazione predefinita, il contenitore viene eseguito in isolamento. Pertanto, non sarai in grado di comunicare con esso e nessun file viene memorizzato nella directory corrente.

Inoltra le porte di un container

Puoi inoltrare le porte utilizzando l' opzione -p , ad esempio, una pagina esposta dal tuo contenitore:

docker run -p 8080:80 nginx

Questo contenitore NGINX espone un server web sulla porta 80. Utilizzando -p 8080: 80, la porta locale 8080 viene inoltrata alla porta del contenitore 80.

Accedi a un contenitore

A volte è utile accedere a un contenitore. Ciò è possibile solo se il contenitore ha una shell installata. Riceverai un errore se questo non è il caso.

Innanzitutto, avvia il contenitore scollegato e dagli un nome:

docker run -d --name my_container nginx

Ciò restituirà un ID contenitore. Ora puoi eseguire una shell nel contenitore e allegare l'input e l'output ad essa usando le opzioni -i e -t :

docker exec -it my_container bash

Invece del nome del contenitore, puoi anche utilizzare l'ID del contenitore restituito per tutte le operazioni seguenti. A volte, bash non è disponibile. Pertanto, puoi anche provare ad avviare una shell di base:

docker exec -it my_container sh

Elenca i contenitori in esecuzione

Dopo aver avviato un contenitore, puoi vedere tutti i contenitori in esecuzione in esecuzione:

docker ps

Aggiungendo -a , verranno elencati anche i contenitori usciti:

docker ps -a

Condividi una cartella locale con un contenitore

Sometimes it is useful to sync files between the container and the local filesystem. You can do it by running a container and using the -v option. On Linux and macOS, you can share a local temporary folder with a container by:

docker run --name=my_container -d -v $(pwd)/tmp:/var/log/nginx -p 8080:80 nginx

On windows you can run:

docker run --name=my_container -d -v %cd%/tmp:/var/log/nginx -p 8080:80 nginx

Stop running containers

It is possible to stop a running container by:

docker stop my_container

Stopping a container stops all processes but keeps changes within the filesystem.

Start a stopped container

A stopped container can be started by:

docker start my_container

Remove a container

To remove a stopped container, you can execute:

docker rm my_container

To stop and remove the container in one command, you can add the force option -f.

docker rm -f my_container

Create a volume and share it with multiple containers

An independent volume named SharedData can be created by:

docker volume create --name SharedData docker run --name=my_container -d -v SharedData:/var/log/nginx -p 8080:80 nginx docker run --name=my_container_2 -d -v SharedData:/var/log/nginx -p 8080:80 nginx

Both containers will have a shared folder, and files will be synced between both containers.

Remove a volume

To remove a volume, all containers that use the volume need to be removed.

docker rm -f my_container docker rm -f my_container_2 docker volume rm SharedData

Remove stopped containers and unused images

A safe tidy-up command is:

docker system prune -a

Remove all unused volumes

All unmounted volumes can be removed by:

docker volume prune

Conclusion

Creating containers, logging into containers, forwarding ports, and sharing volumes are the most important commands of your Docker command line interface. They build the foundation of systems like Kubernetes and enable us to create and run applications in isolation.

I hope you enjoyed the article. If you like it and feel the need for a round of applause, follow me on Twitter.

I am a co-founder of our revolutionary journey platform called Explore The World. We are a young startup located in Dresden, Germany and will target the German market first. Reach out to me if you have feedback and questions about any topic.

Happy Docker exploring :)

References

  • Docker command line documentation

    //docs.docker.com/engine/reference/commandline/docker/