Business
Jobs
  • About Us
  • Solutions
    • Job Postings
      Post your job and receive qualified candidates in 48h.
    • Candidate Assessments
      500+ technical and psychological tests, plus anti-fraud.
    • Headhunting
      Tailor-made executive search from start to finish.
    • Payroll + EOR
      Payroll dispersal and EOR across 15+ LATAM countries.
  • Pricing
  • Jobs

0

1.2K
Views
¿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 answers
Answer question

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 Report

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 Report

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 Report
Answer question
Find remote jobs

Discover the new way to find a job!

Top jobs
Top job categories
Business
Post vacancy Pricing Sales
Legal
Terms and conditions Privacy policy
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Show me some job opportunities
There's an error!