GNU/Linux >> Tutoriales Linux >  >> Panels >> Docker

Cómo podar los recursos de Docker no utilizados

Docker le permite empaquetar rápidamente sus aplicaciones como contenedores, lo que hace posible 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. Aquí se explica cómo ordenarlos.

Docker no suele eliminar nada a menos que se lo indiques. Eso significa que las imágenes que extrajo y los contenedores que creó probablemente todavía estén en su sistema, incluso si ya no se usan.

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 enumera los recursos en la línea de comandos, lo que dificulta encontrar la información que está buscando.

Poda de recursos colgantes

Un recurso "colgante" 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 mantenimiento que le permite purgar todos los recursos pendientes y los contenedores detenidos. A menos que un recurso sea utilizado por un ejecutante contenedor, se eliminará.

docker system prune

Ejecutar el comando muestra un mensaje de confirmación que enumera los tipos de recursos para eliminar. Escribe y y presione Entrar para continuar con la eliminación. Puede deshabilitar la confirmación pasando el -f o --force bandera.

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

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

Uso de filtros al podar

Los filtros se pueden usar con prune dominio. El filtrado le da más control sobre lo que se elimina. Actualmente se admiten dos filtros, until y timestamp .

  • until – El until El filtro evita la eliminación de contenedores, imágenes y redes creadas antes de un tiempo determinado. Puede especificar la hora en varios formatos diferentes, como una marca de tiempo de Unix en segundos (por ejemplo, 1614890000 ) o una cadena de marca de tiempo con formato de fecha (por ejemplo, 2021-03-04T20:30:00 ).
  • label – La label El filtro restringe la eliminación para que solo se eliminen los recursos con una etiqueta determinada. Las etiquetas se pueden utilizar con contenedores, imágenes, redes y volúmenes. Las etiquetas se especifican como label=key=value (clave igual al valor), label!=key=value (la clave no es igual al valor), label=key (tiene la etiqueta dada) o label!=key (no tiene la etiqueta dada).

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

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

Este comando eliminaría recursos con foo=bar etiqueta que se crearon antes de las 8:30 p. m. del 4 de marzo. Cualquier recurso que no coincida con este criterio no se modificará.

Depuración 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.

El --force y --filter banderas compatibles con docker system prune también se aplican a los comandos de poda individuales que se enumeran a continuación.

Contenedores de poda

Los comandos cotidianos de Docker pueden generar rápidamente una gran cantidad de contenedores detenidos. El problema se exaspera si docker build imágenes sin el --rm marca, ya que esto hace que se conserven las capas de construcción intermedias.

Ejecute docker container prune para limpiar los contenedores parados. Los contenedores detenidos no aparecen cuando ejecuta docker ps; para verlos, deberá usar docker ps -a para mostrar todos los contenedores en su sistema.

Si desea eliminar un contenedor individual, use el docker rm comando que pasa la ID del contenedor. Puede obtener esto ejecutando docker ps . Si el contenedor se está ejecutando, deberá usar --force marcar para eliminarlo.

Imágenes de poda

Usar docker image prune para eliminar todas las imágenes colgantes. Me gusta docker system prune , esto afectará a las imágenes que no están etiquetadas o a las que ningún contenedor hace referencia.

Agrega el -a marca para eliminar todas las imágenes no utilizadas. Esto purgará cada 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á borrar rápidamente las extracciones antiguas de Docker Hub.

Puede eliminar una imagen específica con docker rmi comando:

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 terminar con una gran cantidad de ellos. Esto satura su sistema con dispositivos de puente virtual redundantes y entradas de tablas de enrutamiento. Ejecute docker network prune para destruir cualquier red no utilizada y revertir los cambios en la configuración de su host.

Puede eliminar redes individuales ejecutando docker rm my-network .

Volúmenes de poda

Docker nunca eliminará un volumen. Almacenan los datos persistentes creados por sus contenedores, por lo que la eliminación no intencionada podría tener consecuencias devastadoras. Los volúmenes también pueden compartirse entre varios contenedores o dejarse inactivos listos para adjuntarse 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 utilice al menos un contenedor. Los volúmenes individuales se pueden eliminar usando docker volume rm my-volume .

Prevención de la Acumulación Futura

Puede minimizar el riesgo de que se acumulen recursos redundantes en el futuro teniendo cuidado de pasar el --rm marcar para docker build y docker run comandos.

Cuando se usa con build , provocará la eliminación de las capas de construcción intermedias (marcadas como <none>:<none> en docker images ) producción. Esto puede representar una reducción significativa en el uso del disco. Normalmente se crea una nueva capa intermedia para cada instrucción en su Dockerfile . Por lo general, puede eliminarlos a menos que tenga la intención de usarlos más tarde como punto de partida para una nueva imagen.

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

Conclusión

Recortar 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 recursos que está buscando.

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


Docker
  1. Cómo eliminar todas las imágenes, contenedores, volúmenes, redes y recursos no utilizados de Docker

  2. Cómo actualizar automáticamente los contenedores Docker en ejecución

  3. Cómo exportar e importar contenedores Docker

  4. Cómo usar Docker Compose

  5. Cómo conectar contenedores Docker

Cómo ejecutar contenedores Docker

Cómo eliminar contenedores Docker

Cómo detener los contenedores de Docker

Cómo nombrar o renombrar contenedores Docker

Cómo gestionar contenedores Docker

Cómo configurar espacios de nombres de red en contenedores Docker