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

387
Visualizações
¿Cómo docker exec -ti CONTAINER_NAME/bin/bash en la pila docker implementada?

Tengo una pila acoplable implementada en AWS con enjambre:

 docker stack deploy --with-registry-auth -c docker-stack.yml pipeline

Quiero obtener una sesión de bash interactiva en uno de los contenedores definidos en docker-stack.yml , pero las diversas invocaciones de docker exec -ti CONTAINER_NAME /bin/bash que probé fallan.

¿Cuál es el método correcto para derivar un nombre de contenedor para pasarlo a:

 docker exec -it CONTAINER_NAME /bin/bash

dado que:

 docker service ps pipeline_django

devuelve información de servicio válida y:

 docker stack ps pipeline

devuelve información válida de la pila.

Ninguno de los métodos documentados para derivar container_name de estos comandos funciona cuando se pasa al comando docker exec -it . Todos fallan con:

Respuesta de error del demonio: No existe tal contenedor

He probado las cosas enumeradas aquí:

ejecutar un comando dentro del servicio docker swarm

about 4 years ago · Santiago Trujillo
3 Respostas
Responde à pergunta

0

Las otras respuestas fallaron, porque no extraen el contenedor de la tarea. Swarm envuelve un objeto de tarea alrededor de un contenedor:

 taskid=$(docker service ps -q ${servicename} |head -1) containerid=$(docker inspect -f '{{.Status.ContainerStatus.ContainerID}}' ${taskid}) docker exec -it ${containerid} "$*"

Por supuesto, esto solo tomará el primer contenedor de la lista.

about 4 years ago · Santiago Trujillo Relatório

0

Aquí hay un ejemplo en mi macOS local.

 $ docker stack ls NAME SERVICES gospot_web 1 $ docker service ls ID NAME MODE REPLICAS IMAGE PORTS qigx492p2lbe gospot_web_web global 1/1 gospot/gospot-web:0.1.20.g225306b *:80->80/tcp, *:443->443/tcp

Puede usar la identificación del contenedor o el nombre del contenedor para acceder al contenedor.

 $ docker ps CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b3824a85d3c8 gospot/gospot-web:0.1.20.g225306b "nginx -g 'daemon of…" 2 hours ago Up 2 hours (healthy) 80/tcp, 443/tcp gospot_web_web.3cqcd1v22vaon517j7p5h1d9a.wrel676fcllssrm3151ymkse9 $ docker exec -it b3824a85d3c8 sh / # ls bin etc lib mnt root sbin sys usr dev home media proc run srv tmp var / # $ docker exec -it gospot_web_web.3cqcd1v22vaon517j7p5h1d9a.wrel676fcllssrm3151ymkse9 sh / # ls bin dev etc home lib media mnt proc root run sbin srv sys tmp usr var / #

Si el nombre del servicio de destino es lo suficientemente único, puede usar la siguiente línea.

 $ docker exec -it $(docker ps | grep gospot_web_web | awk '{print $1}') sh / # ls bin etc lib mnt root sbin sys usr dev home media proc run srv tmp var / #

Espero que esto ayude.

about 4 years ago · Santiago Trujillo Relatório

0

Puede usar el siguiente comando y reemplazar SERVICE_NAME con el nombre de su servicio:

 docker exec -it \ $(docker stack ps pipeline| grep SERVICE_NAME | cut -d' ' -f1) /bin/bash

este comando encuentra la identificación del contenedor de su servicio:

 docker stack ps pipeline| grep SERVICE_NAME | cut -d' ' -f1
about 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