Docker
contenedor
remove

Eliminar contenedor Docker

Este artículo resume siete puntos clave sobre la eliminación de contenedores Docker. Se centra en el comando docker container rm, e incluye cómo borrar basándose en el estado del contenedor, así como otros contenidos como métodos de recuperación y resolución de problemas.

1. Comando delete de contenedor Docker [#1].

Los comandos docker container delete son los siguientes.

$ docker container rm [OPTIONS] CONTAINER [CONTAINER...]

Este comando rm borra uno o más contenedores terminados. Puedes ejecutarlo especificando el ID o nombre del contenedor en la posición CONTAINER. Ten en cuenta que sólo se elimina el contenedor, no la imagen docker. El comando para eliminar una imagen docker es docker image rm, ver este post para más detalles.

También puedes añadir tres opciones a la ubicación [OPTIONS]: --force, --link, y --volume. La opción --force se trata más adelante en la Sección 4 .

La opción --link borra el enlace que contiene el contenedor. Es importante tener en cuenta que esto no elimina el contenedor en sí. Dado que Docker recomienda el uso de redes personalizadas en lugar de enlaces, es probable que esta opción sea obsoleta. Por ahora, recomendamos su uso sólo en código heredado.

La opción --volume significa que cuando eliminas un contenedor, también eliminas cualquier volumen asociado a él. Como veremos en otro post, un volumen que sirve de almacenamiento para un contenedor es una entidad independiente. Así que cuando se elimina un contenedor, el volumen no se elimina automáticamente.

Comprobemos esto con un ejemplo. El siguiente ejemplo obtiene una lista de todos los contenedores, obtiene el ID del contenedor, y lo borra

$ docker container ls --all
CONTAINER ID   IMAGE    COMMAND                  ...
6f3e40d12122   nginx    "/docker-entrypoint.…"   ...
 
$ docker container rm 6f3e
6f3e
 
$ docker container ls --all
CONTAINER ID   IMAGE    COMMAND   ...

Puede ver que el contenedor se ha eliminado correctamente y ya no está visible.

2. Alternativas para recuperar contenedores borrados

Docker no proporciona una forma de recuperar contenedores que han sido borrados con el comando rm. Por lo tanto, en caso de un borrado inesperado, es bueno conocer las siguientes alternativas.

2.1. Gestión de datos con volúmenes

Los volúmenes Docker son la mejor manera de almacenar de forma segura datos que necesitan ser almacenados permanentemente en un contenedor, o datos que necesitan ser compartidos. Como se menciona en Sección 1, los volúmenes se purgan independientemente de los contenedores, así que asegúrate de que cualquier dato que no deba ser purgado de un contenedor se almacena en un volumen.

2.2. Creando una nueva imagen usando el comando docker container commit

El comando docker container commit crea una nueva imagen con todos los cambios en el contenedor actual. Así que para contenedores que necesitan mantener su estado actual, puedes usar este comando periódicamente.

3. Solución para el fallo en la eliminación de contenedores

Si tu contenedor Docker falla al borrarse, hay muchas causas posibles. Aquí están cinco de las causas más comunes y sus soluciones.

3.1. Contenedores en ejecución

Docker impide que elimines un contenedor en ejecución. Por lo tanto, es una buena práctica comprobar si el contenedor que quieres borrar está actualmente en ejecución, y si es así, mátalo con el comando docker container stop, y luego bórralo.

Si estás seguro de que el contenedor no se dañará al ser borrado forzosamente, también puedes borrarlo siguiendo las instrucciones de la Sección 4 sobre cómo borrar forzosamente un contenedor.

3.2. Contenedor utilizado por otro contenedor

También debes comprobar si el contenedor que quieres borrar está siendo utilizado por otro contenedor, porque si es así, tampoco podrás borrarlo.

Un contenedor puede estar vinculado a otro mediante un volumen (opción --volumes-from), un enlace (opción --link), una red (opción --network), etc. En estos casos, otros contenedores que utilicen el contenedor actual deben ser borrados antes de que el contenedor actual pueda ser borrado.

3.3. Problemas de permisos

Si el usuario actual no tiene los permisos apropiados para usar Docker, borrar un contenedor puede fallar debido a problemas de permisos. Por favor, consulte Detener y terminar un contenedor Docker - 7. ¿Qué hacer si se deniega el permiso? Qué hacer si se deniega el permiso.

3.4 Otros Problemas del Entorno del Servidor

Además de lo anterior, los contenedores pueden ser denegados si el servidor no tiene suficiente espacio en disco, o si el demonio Docker no está funcionando correctamente. Le recomendamos que compruebe estas áreas.

4. Forzar la baja de un contenedor en ejecución [#4].

Forzar la baja de un contenedor en ejecución no es una práctica recomendada. Sin embargo, si un contenedor no está funcionando correctamente y no puede ser apagado normalmente, puede ser necesario.

Aquí es donde entra la opción --force del comando docker container rm. Puedes usarla así

$ docker container rm --force CONTAINER

When forcibly deleting a container, always make sure that it will not affect other containers, volumes, etc. before proceeding.

5. Deleting all terminated containers

If all your terminated containers are no longer in use, there is a way to delete them all with a single command.

$ docker container prune

Cuando escribas este comando, Docker te preguntará de nuevo si realmente quieres borrar todos los contenedores terminados. Si respondes que sí, procederá a borrar todos los contenedores terminados.

Como se mencionó en la Sección 2, no hay forma de recuperar los contenedores Docker borrados, así que usa este comando con precaución.

6. Borrar todo el contenedor

Realmente no recomiendo esto, pero si realmente quieres borrar todos tus contenedores a la vez, estén en ejecución o parados... hay una manera.

$ docker container rm --force $(docker container ls -aq)

El comando docker container ls -aq busca los IDs de los contenedores en todos los estados. Envía esta lista de IDs como argumento al comando rm en la sintaxis $() de un script de shell. Si alguno de los contenedores de la lista está en ejecución, no se borrará de forma natural, por lo que necesitamos añadir la opción --force para forzar su borrado.

7. Conclusión

En este artículo, hemos resumido la información sobre cómo borrar un contenedor Docker. Centrándonos en el comando docker container rm, hemos cubierto cómo borrar un contenedor basándonos en su estado, así como métodos de recuperación y resolución de problemas. Espero que te resulte útil a la hora de borrar un contenedor.

copyright for docker container remove

© 2023 All rights reserved.