Empresas
Empregos
  • Sobre nós
  • Soluções
    • Publicação de vagas
      Publique sua vaga e receba candidatos qualificados em 48h.
    • Avaliações de candidatos
      Mais de 500 testes técnicos e psicológicos, mais anti-fraude.
    • Headhunting
      Busca executiva personalizada do início ao fim.
    • Folha de Pagamento + EOR
      Dispersão de folha e EOR em mais de 15 países da LATAM.
  • Preços
  • Empregos

0

1.2K
Visualizações
¿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 Respostas
Responde à pergunta

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 Relatório

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 Relatório

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 Relatório
Responde à pergunta
Encontrar trabalhos remotos

Descubra a nova forma de encontrar um emprego!

melhores empregos
Principais categorias de trabalho
Empresas
Postar vaga Preços Comercial
Jurídico
Termos e Condições Política de privacidade
© 2026 PeakU Inc. All Rights Reserved.
Andres GPT
Recomende algumas ofertas para mim
Preciso de ajuda