Guía de imágenes de Docker: cómo eliminar imágenes de Docker, detener contenedores y eliminar todos los volúmenes

Docker ha sido ampliamente adoptado y es un gran vehículo para implementar una aplicación en la nube (o alguna otra infraestructura preparada para Docker). También es útil para el desarrollo local. Puede iniciar aplicaciones complejas rápidamente, desarrollar de forma aislada y seguir teniendo un rendimiento muy bueno.

Estos son los comandos más importantes para usar Docker en su negocio diario de manera eficiente.

Mostrar todas las imágenes de Docker

docker images 

En mi caso, tengo instaladas 3 imágenes:

  • MySQL, versión 8.0.19, una etiquetada como última versión
  • y Cassandra con la última versión.

Para obtener más información sobre una imagen, puede inspeccionarla:

docker inspect mysql:latest

Esto devolverá una lista de información. Alternativamente, también puede usar el ID de imagen para obtener la información:

docker inspect 3a5e53f63281

El resultado puede ser abrumador. Por lo tanto, existe una opción útil para filtrar cierta información:

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

Eliminar imágenes de Docker

Una sola imagen se puede eliminar mediante:

docker rm mysql:latest

En mi caso, la imagen todavía está etiquetada con mysql: 8.0.19 . Por lo tanto, para eliminarlo por completo, también necesito eliminar otra etiqueta de versión:

docker rm mysql:8.0.19

Para eliminar la imagen directamente, es más fácil eliminar la imagen por id de imagen:

docker image rm 3a5e53f63281 -f

La opción -f fuerza la ejecución, porque de lo contrario obtendría un error si la imagen es referenciada por más de 1 etiqueta.

Iniciar una imagen de Docker

Una imagen se puede iniciar en primer plano mediante:

docker run cassandra

Si la imagen no existe, se descargará. Puede detener la ejecución presionando CTRL + C . También puede ejecutarlo en segundo plano agregando la opción -d :

docker run -d mysql

Si el contenedor se inicia en segundo plano, recibirá el ID del contenedor.

De forma predeterminada, el contenedor se ejecuta de forma aislada. Por lo tanto, no podrá comunicarse con él y no se almacenan archivos en su directorio actual.

Reenviar puertos de un contenedor

Puede reenviar puertos utilizando la opción -p a, por ejemplo, una página que está expuesta desde su contenedor:

docker run -p 8080:80 nginx

Este contenedor NGINX expone un servidor web en el puerto 80. Al usar -p 8080: 80, el puerto local 8080 se reenvía al puerto 80 del contenedor.

Iniciar sesión en un contenedor

A veces es útil iniciar sesión en un contenedor. Esto solo es posible si el contenedor tiene un shell instalado. Obtendrá un error si este no es el caso.

Primero, inicie el contenedor separado y asígnele un nombre:

docker run -d --name my_container nginx

Esto devolverá un ID de contenedor. Ahora puede ejecutar un shell en el contenedor y adjuntarle su entrada y salida usando las opciones -i y -t :

docker exec -it my_container bash

En lugar del nombre del contenedor, también puede usar el ID del contenedor devuelto para todas las operaciones siguientes. A veces, bash no está disponible. Por lo tanto, también puede intentar ejecutar un shell básico:

docker exec -it my_container sh

Lista de contenedores en ejecución

Después de haber iniciado un contenedor, puede ver todos los contenedores en ejecución ejecutándose:

docker ps

Al agregar -a , también se enumerarán los contenedores salidos:

docker ps -a

Comparte una carpeta local con un contenedor

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/