Empresas
Empleos
  • Sobre nosotros
  • Soluciones
    • Publicación de vacantes
      Publica tu vacante y recibe candidatos calificados en 48h.
    • Evaluación de candidatos
      500+ pruebas técnicas y psicológicas, más anti-fraude.
    • Headhunting
      Búsqueda ejecutiva a la medida de principio a fin.
    • Nómina + EOR
      Dispersión de nómina y EOR en más de 15 países de LATAM.
  • Precios
  • Empleos

0

1.2K
Vistas
¿Obtener la ubicación del archivo docker-compose.yml desde el contenedor en ejecución?

Tengo algunos contenedores docker en ejecución creados al ejecutar docker-compose up .

¿Hay alguna forma de obtener la ruta de archivo exacta del archivo docker-compose.yml correspondiente utilizado para iniciar estos contenedores, simplemente inspeccionando los contenedores en ejecución?

Por lo que puedo ver, docker inspect CONTAINER_NAME no proporciona esta información, ni docker-compose proporciona un método para obtener información relacionada con la redacción de un contenedor en ejecución.

Lo que me gustaría hacer en un script:

  • enumerar ciertos contenedores en ejecución en un host docker
  • obtener las ubicaciones correspondientes del archivo docker-compose.yml
  • use docker-compose para reiniciar todos los contenedores de los proyectos correspondientes de docker-compose a la vez
over 4 years ago · Santiago Trujillo
3 Respuestas
Responde la pregunta

0

La respuesta a esta pregunta parece haber cambiado con las nuevas versiones de docker-compose. Hay una etiqueta "com.docker.compose.project.working_dir": "/var/opt/docker", que apunta al directorio donde inicié docker-compose. No he comprobado si es pwd o la ubicación real del archivo docker-compose.yml.

Esto me dio información interesante sobre docker-compose:

samuel@vmhost1:~$ ventana acoplable inspeccionar fc440a1afbaa | grep com.docker.compose
                "com.docker.compose.config-hash": "89069285a4783b79b421ea84f2b652becbdee148fbad095a6d9d85aab67ececc",
                "com.docker.compose.número-contenedor": "1",
                "com.docker.compose.oneoff": "Falso",
                "com.docker.compose.project": "docker",
                "com.docker.compose.project.config_files": "docker-compose.yml",
                "com.docker.compose.project.working_dir": "/var/opt/docker",
                "com.docker.compose.servicio": "jenkins",
                "com.docker.compose.versión": "1.25.0"
samuel@vmhost1:~$ 

Estoy ejecutando la configuración docker-compose.yml versión 3.6

over 4 years ago · Santiago Trujillo Denunciar

0

Actualmente no es posible.

Como alternativa, podría encontrar útil lo siguiente:

  • Utilice docker ps -a | grep <certain_container>
  • Utilice locate docker-compose.yml y busque la que desee.
  • Use docker-compose restart (haga docker-compose para ver la opción)
over 4 years ago · Santiago Trujillo Denunciar

0

Actualización: desde que se solicitó esto, se lanzó docker compose v2, que está escrito en Go y accesible desde docker compose en lugar de docker-compose (también puede haber una corrección que dirija docker-compose a esta nueva versión dependiendo de su instalación). Esta versión ahora incrusta el directorio en las etiquetas de imagen que puede recuperar con:

 docker container inspect ${container_name_or_id} \ --format '{{ index .Config.Labels "com.docker.compose.project.working_dir" }}'

Esto no es perfecto para la solicitud del OP, ya que puede haber más de un archivo de composición, el archivo podría estar ubicado en un directorio diferente de donde se ejecutó la composición y no captura cosas como variables de entorno o perfiles que pueden modificar cómo componer inicia el proyecto. Sin embargo, sospecho que hace que la mayoría de la gente se acerque lo suficiente como para encontrar la fuente.

Si está usando una versión anterior de componer, puede usar una de las opciones en la respuesta original a continuación:


Por lo que puedo ver, docker inspect CONTAINER_NAME no proporciona esta información, ni docker-compose proporciona un método para obtener información relacionada con la redacción de un contenedor en ejecución.

Desde un contenedor que ya se está ejecutando y que no controla, la información no está allí. Puede inferir la ubicación utilizando directorios de montaje vinculados si el contenedor crea montajes de host en directorios relativos. De lo contrario, es posible implementar contenedores sin componer, y es posible usar componer sin un archivo de composición en el sistema de archivos (canalizado a través de stdin), y componer no almacena estos detalles en los contenedores en ejecución por usted.


Lo que me gustaría hacer en un script:

  • enumerar ciertos contenedores en ejecución en un host docker
  • obtener las ubicaciones correspondientes del archivo docker-compose.yml
  • use docker-compose para reiniciar todos los contenedores de los proyectos correspondientes de docker-compose a la vez

Si solo desea ejecutar un reinicio en todos los contenedores en el mismo proyecto, no necesita los primeros dos pasos, ni siquiera docker-compose . En su lugar, puede ejecutar:

 docker ps --filter "label=com.docker.compose.project=${your_compose_project}" -q \ | xargs docker restart

Que usa una etiqueta docker-compose agrega a cada proyecto que implementa.


Si desea almacenar de manera proactiva la ubicación del archivo de redacción para su uso posterior, puede insertarlo como una etiqueta en su archivo de redacción:

 version: '2' services: test: image: busybox command: tail -f /dev/null labels: COMPOSE_PATH: ${PWD} # many Linux shells define the PWD variable

Si su shell no establece una variable de entorno ${PWD} , puede comenzar a redactar con:

 PWD=$(pwd) docker-compose up -d

Luego puede inspeccionar los contenedores para el valor de esta etiqueta con:

 docker inspect --format '{{.Config.Labels.COMPOSE_PATH}}' ${your_container_id}

Y puede encadenar un comando de filtro e inspección para encontrar la ruta de un proyecto específico:

 docker ps --filter "label=com.docker.compose.project=${your_compose_project}" -q \ | xargs docker inspect --format '{{.Config.Labels.COMPOSE_PATH}}'
over 4 years ago · Santiago Trujillo Denunciar
Responde la pregunta
Encuentra empleos remotos

¡Descubre la nueva forma de encontrar empleo!

Top de empleos
Top categorías de empleo
Empresas
Publicar vacante Precios Comercial
Legal
Términos y condiciones Política de privacidad
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomiéndame algunas ofertas
Necesito ayuda