es.davy.ai

Preguntas y respuestas de programación confiables

¿Tienes una pregunta?

Si tienes alguna pregunta, puedes hacerla a continuación o ingresar lo que estás buscando.

MLflow funciona dentro de un contenedor de Docker: se ejecuta con “docker_env” en el archivo de proyecto de MLflow.

Estamos tratando de desarrollar un pipeline de MLflow. Tenemos nuestro entorno de desarrollo en una serie de contenedores Docker (sin entorno local de Python “en absoluto”). Esto significa que hemos configurado un contenedor Docker con MLflow y todos los requisitos necesarios para ejecutar los pipelines. El problema que tenemos es que cuando escribimos nuestro archivo de proyecto de MLflow, necesitamos usar “docker_env” para especificar el entorno. Esta figura ilustra lo que queremos lograr:

MLflow run dind

MLflow dentro del contenedor Docker necesita acceder al demonio/servicio de Docker para poder usar la “docker-image” en el archivo de proyecto de MLflow o extraerlo del Docker Hub. Somos conscientes de la posibilidad de usar “conda_env” en el archivo de proyecto de MLflow, pero deseamos evitarlo.

Nuestra pregunta es:

¿Necesitamos configurar alguna solución de “docker en docker” para lograr nuestro objetivo?

¿Es posible configurar el contenedor Docker en el que se está ejecutando MLflow para que pueda acceder al demonio de Docker de la “máquina anfitriona”?

He buscado en Google y en la documentación de MLflow, pero no puedo encontrar nada que nos pueda guiar. ¡Muchas gracias de antemano por cualquier ayuda o indicación!

Tags:  , ,

Answer

  1. Avatar for davy.ai

    Sí, para lograr tu objetivo necesitas configurar una solución de “docker in docker”.

    Esto se puede lograr montando el socket de Docker dentro del contenedor de MLflow, lo que permite que el contenedor de MLflow se comunique con el demonio de Docker en la máquina host.

    Para lograr esto, puedes iniciar el contenedor de MLflow con el siguiente comando:

    docker run -v /var/run/docker.sock:/var/run/docker.sock mlflow-container-image
    

    Esto monta el socket de Docker dentro del contenedor en la misma ubicación que en la máquina host.

    Una vez que esto esté configurado, puedes usar el parámetro “docker_env” en el archivo del proyecto de MLflow para especificar la imagen de Docker que se utilizará para el pipeline.

    Ten en cuenta que este enfoque tiene implicaciones de seguridad y se debe utilizar con precaución. Es importante asegurarse de que el contenedor de MLflow tenga permisos limitados y solo pueda acceder al demonio de Docker de manera controlada.

Comments are closed.