Herramienta que se utiliza principalmente como un monitor para contenedores en ejecución que cumplen con la especificación OCI (Open Container Initiative). Su función principal es manejar la entrada/salida de los contenedores y gestionar su estado, permitiendo que la API de contenedores (como podman o docker) interactúe con ellos. Generalmente se usa de manera interna por otras herramientas, por lo que no se suele invocar directamente por los usuarios.
Lanzar manualmente un contenedor:
$ conmon --socket-dir /run/user/1000 --cid my-container-id --exit-dir /var/run/conmon/exit --log-path /var/log/my-container.log --log-level debug /usr/bin/my-container-runtime -- my-container-image
En este comando:
--socket-dir: Especifica el directorio donde se almacenarán los sockets de comunicación.
--cid: Especifica el ID del contenedor.
--exit-dir: Directorio donde se almacenarán los datos de salida del contenedor.
--log-path: Ruta al archivo de log donde conmon escribirá los logs.
--log-level: Nivel de detalle de los logs.
/usr/bin/my-container-runtime: Es el runtime del contenedor que se está utilizando, puede ser runc, crun, etc.
my-container-image: Nombre de la imagen del contenedor que se desea ejecutar.
Monitorear la salida de un contenedor redirigiendo la salida estándar y el error estándar a conmon, se podría hacer de la siguiente manera:
$ conmon --socket-dir /run/user/1000 --cid my-container-id --exit-dir /var/run/conmon/exit --log-path /var/log/my-container.log --log-level debug --stdout /dev/stdout --stderr /dev/stderr /usr/bin/my-container-runtime --my-container-image