Cómo eliminar los recursos de Docker no utilizados

Docker le permite empaquetar rápidamente sus aplicaciones como contenedores, lo que permite ejecutarlas en cualquier lugar, desde su computadora portátil hasta una nube pública. Después de usar Docker por un tiempo, puede acumular una gran cantidad de contenedores, imágenes y otros recursos redundantes. He aquí cómo reordenarlos.

Estibador generalmente no elimina cualquier cosa a menos que usted se lo diga. Esto significa que las imágenes que ha extraído y los contenedores que ha creado probablemente todavía estén en su sistema, incluso si ya no se utilizan.

Tener demasiados recursos redundantes puede conducir rápidamente a un uso excesivo del disco. También da como resultado una salida mucho más larga cuando se enumeran los recursos en la línea de comandos, lo que dificulta encontrar la información que está buscando.

Índice de contenidos
  1. Poda de recursos colgantes
  2. Uso de filtros durante la poda
  3. Poda de tipos de recursos individuales
    1. Contenedores para poda
    2. Fotos de poda
    3. Redes de poda
    4. Volúmenes de poda
  4. Evitar la acumulación futura
  5. Conclusión

Poda de recursos colgantes

Un recurso "suspendido" es cualquier objeto Docker que no esté asociado actualmente con un contenedor. Esto incluye imágenes, redes y volúmenes de Docker, así como contenedores detenidos. En el caso de las imágenes, una imagen está "colgando" si no está etiquetada y no tiene referencias.

Docker proporciona un único comando de limpieza que le permite eliminar todos los recursos suspendidos y los contenedores bloqueados. A menos que un archivo esté utilizando un recurso corriendo contenedor, se eliminará.

docker system prune

La ejecución del comando muestra un mensaje de confirmación que enumera los tipos de recursos que se eliminarán. tipo y y presione Entrar para continuar con la eliminación. Puede deshabilitar la confirmación pasando el archivo -f o --force bandera.

Los volúmenes no se eliminan de forma predeterminada. Eliminar volúmenes corre el riesgo de perder datos persistentes que quizás desee conservar. Si desea eliminar volúmenes que no están asociados con un contenedor, pase el archivo --volumes bandera para incluirlos en la operación.

Puede eliminar aún más datos de imagen pasando el archivo -a (o --all) bandera. Esto hará que Docker elimine todos los archivos. no usado imágenes, no solo colgando sin referencia. Se eliminarán todas las imágenes de su sistema, a menos que haya al menos un contenedor en ejecución que lo requiera.

Uso de filtros durante la poda

Los filtros se pueden usar con la extensión prune mando. El filtrado le brinda más control sobre lo que se elimina. Actualmente se admiten dos filtros, until es timestamp.

  • until - Los until el filtro evita la eliminación de contenedores, imágenes y redes creadas antes de un cierto período de tiempo. Puede especificar la hora en diferentes formatos, como una marca de tiempo de Unix en segundos (p. Ej. 1614890000) o una serie de marcas de tiempo en formato de fecha (p. ej. 2021-03-04T20:30:00).
  • label - Los label el filtro restringe la eliminación para que solo se eliminen los recursos con una determinada etiqueta. Las etiquetas se pueden utilizar con contenedores, imágenes, redes y volúmenes. Puede especificar etiquetas como ambas label=key=value (clave igual al valor), label!=key=value (clave diferente al valor), label=key (tiene la etiqueta de la fecha) o label!=key (no tiene etiqueta de fecha).

Para usar un filtro, páselo al archivo --filter bandera:

docker system prune --filter until=2021-03-04T20:30:00 --filter label=foo=bar

Este comando eliminaría los recursos con la extensión foo=bar etiqueta creada antes de las 8:30 pm del 4 de marzo. Los recursos que no coincidan con estos criterios quedarán intactos.

Poda de tipos de recursos individuales

No siempre necesitarás usar docker system prune. Docker también proporciona comandos de poda más granulares. Estos se pueden usar cuando solo desea eliminar un tipo de recurso.

los --force es --filter banderas apoyadas por docker system prune también se aplican a los comandos de poda individuales que se enumeran a continuación.

Contenedores para poda

Los comandos diarios de Docker pueden provocar rápidamente una gran cantidad de contenedores bloqueados. El problema se exaspera si docker build imágenes sin la extensión --rm bandera, ya que esto hace que se mantengan los niveles de construcción intermedios.

Correr docker container prune para limpiar contenedores bloqueados. Los contenedores detenidos no se muestran durante la ejecución docker ps; para verlos tendrás que usar docker ps -a para mostrar todos los contenedores en su sistema.

Si desea eliminar un solo contenedor, use la extensión docker rm comando que pasa el ID del contenedor. Puedes conseguirlo corriendo docker ps. Si el contenedor se está ejecutando, deberá usar la extensión --force bandera para eliminarlo.

Fotos de poda

Usar docker image prune para eliminar todas las imágenes colgantes. Gusta docker system prune, esto afectará a las imágenes que no están etiquetadas ni referenciadas por ningún contenedor.

Añade el -a marca para eliminar todas las imágenes no utilizadas en su lugar. Esto eliminará cualquier imagen en su sistema que no sea requerida por al menos un contenedor. También se incluirán imágenes etiquetadas, lo que le permitirá eliminar rápidamente extracciones antiguas de Docker Hub.

Puedes eliminar una imagen específica con la extensión docker rmi mando:

docker rmi wordpress:latest

Cuando una imagen tiene varias etiquetas, docker rmi eliminará la etiqueta dada sin eliminar realmente la imagen. Se eliminará una vez que se elimine la última etiqueta.

Redes de poda

Las redes de Docker no se limpian automáticamente. Con el tiempo, puede encontrarse con una gran cantidad de ellos. Esto satura su sistema con dispositivos de puente virtual redundantes y entradas de la tabla de enrutamiento. Correr docker network prune para destruir todas las redes no utilizadas y revertir los cambios de configuración de su host.

Puede eliminar redes individuales ejecutando docker rm my-network.

Volúmenes de poda

Docker nunca eliminará un volumen. Almacenan datos persistentes creados por contenedores, de modo que la eliminación involuntaria puede tener consecuencias devastadoras. Los volúmenes también se pueden compartir con varios contenedores o dejarlos inactivos, listos para adjuntarlos a otro contenedor en el futuro.

Si desea eliminar los volúmenes no utilizados, debe ejecutar docker volume prune. Esto eliminará todos los volúmenes que no son utilizados por al menos un contenedor. Los volúmenes individuales se pueden eliminar usando docker volume rm my-volume.

Evitar la acumulación futura

Puede minimizar el riesgo de que se acumulen recursos redundantes en el futuro si tiene cuidado de pasar el archivo --rm marcar un docker build es docker run comandos.

Cuando se usa con build, provocará la eliminación de los niveles de construcción intermedios (marcados como <none>:<none> en docker images) producción. Esto puede representar una reducción significativa en el uso del disco. Normalmente se crea un nuevo nivel medio para cada declaración en el archivo. Dockerfile. Por lo general, puede eliminarlos a menos que tenga la intención de usarlos más adelante como punto de partida para una nueva imagen.

Usando --rm con docker run eliminará el contenedor tan pronto como finalice su comando. Esto es ideal cuando se ejecuta un archivo binario en un contenedor de un solo uso. No pasar --rm a contenedores que tiene la intención de ejecutar de forma perpetua o que puede que desee iniciar y detener a pedido. Los ejemplos incluyen servidores web y bases de datos que ejecutan un servicio en lugar de un comando proporcionado por el usuario.

Conclusión

Eliminar los recursos de Docker puede liberar espacio en disco y ayudarlo a trabajar con la CLI de Docker. La eliminación de contenedores e imágenes redundantes facilita la identificación de los activos que está buscando.

Docker no eliminará nada a menos que usted se lo indique. Vale la pena la prisa docker system prune periódicamente para mantener limpio el sistema. Puede crear una tarea cron que la ejecute mensualmente, usando la extensión until filtrar para crear un período de retención para los recursos agregados recientemente.

Descubre más contenido

Deja una respuesta

Tu dirección de correo electrónico no será publicada. Los campos obligatorios están marcados con *

Subir Change privacy settings