Primero, estoy usando docker 1.1.2 tanto para el cliente como para el servidor, esta respuesta puede ser obsoleta para las versiones más nuevas de docker a medida que docker evoluciona rápidamente.
Ubicación del archivo
Encuentra tu directorio acoplable. En los sistemas que utilizan el sistema de estilo / debian apt, el paquete instalado por el repositorio ventana acoplable https://get.docker.com/ubuntu
uso /var/lib/docker
. Lo más probable es que el directorio esté en el mismo lugar en otros sistemas (no se puede confirmar).
debajo containers/**CONTAINER_ID**
encontrarás información sobre el contenedor. En el archivo **CONTAINER_ID**-json.log
en esa carpeta, encontrará un archivo con todos los registros para ese contenedor. Puede parecer un archivo json, no lo es. Es un flujo que estructura json, uno por línea, cada uno de los cuales contiene una línea de registro (cada línea termina en a }
y la siguiente comienza con a {
, por lo tanto, no es un json válido en su conjunto).
Ubicación de ejemplo: - /var/lib/docker/containers/05b6053c41a2130afd6fc3b158bda4e605b6053c41a2130afd6fc3b158bda4e6/05b6053c41a2130afd6fc3b158bda4e605b6053c41a2130afd6fc3b158bda4e6-json.log
Editar / alterar ese archivo
Le sugiero que use esa ruta para ver si es o no, es la razón por la que se está quedando sin espacio, pero no para iniciar sesión.
Preferiría asegurarme de que el contenedor no registre demasiadas líneas (mediante el uso de un CMD en el dockerfile que redirija la salida de su proceso a un archivo en un volumen o a / dev / null - con registros habilitados con configuración - y Luego, rotaría los archivos de registro con otro contenedor)
docker inspect
es tu amigo.docker inspect --format='{{.LogPath}}' $INSTANCE_ID
docker-machine
Aquí una simple línea para limpiar el archivo de registro del contenedor:
echo "" > $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)
fuente
docker-machine ssh default "echo '' | sudo tee $(docker inspect --format='{{.LogPath}}' <container_name_or_id>)"
docker logs
siempre está vacío ...docker inspect --format='{{.LogPath}}' <container_name_or_id>
fue útil. ¡Gracias!si ejecuta
sudo lsof | grep '(deleted)'
, es posible que Docker deje abiertos muchos archivos de registro de contenedor eliminadosEstos son registros que pertenecen a un contenedor eliminado. Una forma de cerrarlos es reiniciando el demonio docker. Esto no siempre es factible.
Otra forma de liberar este espacio es encontrar el descriptor de archivo relevante y truncarlo:
¿Dónde
17511
está el pid de docker ye49d81fc
es parte del nombre de archivo de registro / id del contenedor ofensivo? Aquí, el fd es / proc / 17511 / fd / 25, por lo que lo truncamos:fuente
: > /proc/17511/fd/25
Estoy usando Docker versión 1.13.0, compilación 49bf474
Si está utilizando el formato de registro predeterminado
json-file
, puede especificar la opción para rotar sus registros.Puede configurar el Docker Daemon para hacer eso o configurarlo por contenedor.
Por ejemplo, el tamaño del archivo de registro de 2 MB y un máximo de 5 archivos de registro:
Docker daemon: Crear archivo
/etc/docker/daemon.json
:Docker run:
Para obtener más información, consulte el registro y la configuración de dockerd
fuente
Una respuesta tardía, pero cualquier persona en el mismo barco podría estar mejor explorando opciones para exportar sus registros de la plataforma a algún lugar sensible para administrarlos. logspout es útil para recopilar registros de todos sus contenedores acoplables y enviarlos a algún lugar. SI solo necesita considerar esto, enviarlos al demonio syslog del host podría ser un buen enfoque, y puede usar los mecanismos habituales para organizarlos en archivos y rotarlos desde allí. Para entornos de host múltiples más grandes, puede considerar el envío a una pila "ELK". es decir, Elasticsearch, Logstash y Kibana.
fuente
Para encontrar la ubicación de la ventana acoplable, puede usar:
Si desea liberar espacio, puede hacer lo siguiente:
Ahora puede eliminar un contenedor con:
fuente
Vio este script en la documentación oficial de la ventana acoplable:
Funciona bien, pero Docker no libera la memoria automáticamente ... El script simplemente elimina los archivos de registro.
fuente