Eliminar contenedores de forma permanente en Docker

Eliminar contenedores de forma permanente en Docker

Por lo general, Docker no elimina los contenedores detenidos, sino que solo los elimina. Este proceso ocurre para evitar la eliminación accidental de contenedores detenidos.

Este artículo tratará la eliminación adecuada de contenedores no utilizados y sin etiquetar para recuperar recursos en Docker.

Eliminar contenedores de forma permanente en Docker

En Docker, tenemos el comando de eliminación que eliminará a la fuerza una imagen específica. Este comando es docker rmi -f <image_id> para imágenes y docker rm <container_id> para contenedores.

Sin embargo, en papel, el comando no eliminará la imagen del contenedor, sino que solo la eliminará de forma suave al quitar la etiqueta del objeto.

Si revisamos nuestras imágenes detenidas usando el comando docker image ls -a, podemos verificar que el comando anterior solo quitará la etiqueta de nuestras imágenes en lugar de eliminarlas.

Salida de ejemplo:

Untagged: my_image:latest

Las siguientes secciones analizarán varios scripts y parámetros para ayudarnos a eliminar de forma permanente los contenedores docker.

Eliminar contenedores en Docker

Cuando trabajamos con Docker, podemos acumular rápidamente muchos objetos no utilizados que consumen una cantidad significativa de espacio en disco y saturan la salida producida por los comandos de Docker. Desafortunadamente, Docker no elimina los objetos sin etiquetar y sin usar, como contenedores, imágenes, volúmenes y redes, a menos que nos indique explícitamente que lo hagamos.

Podemos recuperar rápidamente los recursos con la poda de contenedores eliminando los contenedores en estado detenido. Por ejemplo, podemos usar el siguiente comando.

Código de ejemplo:

docker system prune -a

La bandera -a eliminará todas las imágenes no utilizadas. Después de ejecutarse, nos indicará el siguiente mensaje.

Podemos omitir este mensaje agregando el comando anterior con el indicador de fuerza -f.

WARNING! This command will remove the following:
        - all containers with the stopped status
        - all network paths not used by at least one (1) container
        - all images without at least one (1) container associated with them
        - all cache
Are you sure you want to continue? [y/N]

Además, los comandos anteriores no eliminarán los volúmenes no utilizados adjuntos a contenedores Docker anteriores no utilizados. Sin embargo, podemos agregar y usar el parámetro --volumes para incluir la eliminación de volúmenes no utilizados.

Marion Paul Kenneth Mendoza avatar Marion Paul Kenneth Mendoza avatar

Marion specializes in anything Microsoft-related and always tries to work and apply code in an IT infrastructure.

LinkedIn

Artículo relacionado - Docker Container

Artículo relacionado - Docker Image