Tengo un contenedor Docker que se ejecuta en un host de 1G de RAM (también hay otros contenedores que se ejecutan en el mismo host). La aplicación en este contenedor Docker decodificará algunas imágenes, lo que puede consumir mucha memoria.
De vez en cuando, este contenedor saldrá. Dudo que se deba a una falta de memoria, pero no estoy muy seguro. Necesito un método para encontrar la causa raíz. Entonces, ¿hay alguna forma de saber qué sucedió con la muerte de este contenedor?
docker
containers
exit
Li Bin
fuente
fuente
docker logs <container-id>
.Respuestas:
Otros han mencionado
docker logs $container_id
para ver el resultado de la aplicación. Esto siempre sería lo primero que debería comprobar.A continuación, puede ejecutar un
docker inspect $container_id
para ver los detalles del estado, por ejemplo:La línea importante es "OOMKilled", que será verdadera si excede los límites de memoria del contenedor y Docker mata su aplicación. También es posible que desee buscar el código de salida para ver si identifica una causa de la salida de su aplicación.
Tenga en cuenta que esto solo indica si la ventana acoplable mata su proceso y requiere que haya establecido un límite de memoria en su contenedor. Fuera de la ventana acoplable, el kernel de Linux puede lol su proceso si el propio host se queda sin memoria. Linux a menudo escribe en un registro / var / log cuando esto sucede. Con Docker Desktop en Windows y Mac, puede ajustar la memoria asignada a la máquina virtual Linux integrada en la configuración de la ventana acoplable.
fuente
Puede averiguar si el proceso dentro del contenedor fue OOMkilled leyendo los registros. OOMkills son iniciados por el kernel, por lo que cada vez que sucede hay un montón de líneas
/var/log/kern.log
, por ejemplo:fuente
Si bien la respuesta aceptada es la mejor opción, a veces puede ser útil inspeccionar desde el host el contenido de la revista también (en linux).
Puede hacerlo escribiendo:
o siguiéndolo
o canalizar la salida a menos si es demasiado larga para el búfer de su terminal
fuente