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

548
Visualizações
Error "El dispositivo de entrada no es un TTY"

Estoy ejecutando el siguiente comando desde mi Jenkinsfile . Sin embargo, aparece el error "El dispositivo de entrada no es un TTY" .

 docker run -v $PWD:/foobar -it cloudfoundry/cflinuxfs2 /foobar/script.sh

¿Hay alguna manera de ejecutar el script desde Jenkinsfile sin hacer el modo interactivo?

Básicamente, tengo un archivo llamado script.sh que me gustaría ejecutar dentro del contenedor Docker.

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

0

Elimine -it de su cli para que no sea interactivo y elimine el TTY. Si no necesita ninguno de los dos, por ejemplo, ejecutar su comando dentro de un script Jenkins o cron, debe hacer esto.

O puede cambiarlo a -i si tiene una entrada canalizada en el comando docker que no proviene de un TTY. Si tienes algo como xyz | docker ... o docker ... <input en su línea de comando, haga esto.

O puede cambiarlo a -t si desea soporte TTY pero no lo tiene disponible en el dispositivo de entrada. Haga esto para las aplicaciones que buscan un TTY para habilitar el formato de color de la salida en sus registros, o para cuando más tarde se conecte al contenedor con una terminal adecuada.

O si necesita una terminal interactiva y no se está ejecutando en una terminal en Linux o MacOS, use una interfaz de línea de comandos diferente. Se informa que PowerShell incluye este soporte en Windows.


¿Qué es un TTY? Es una interfaz de terminal que admite secuencias de escape, mover el cursor, etc., que proviene de los viejos tiempos de las terminales tontas conectadas a los mainframes. Hoy lo proporcionan los terminales de comandos de Linux y las interfaces ssh. Vea el artículo de wikipedia para más detalles .

Para ver la diferencia de ejecutar un contenedor con y sin TTY, ejecute un contenedor sin uno: docker run --rm -i ubuntu bash . Desde dentro de ese contenedor, instale vim con apt-get update; apt-get install vim . Tenga en cuenta la falta de un aviso. Cuando ejecute vim contra un archivo, intente mover el cursor dentro del archivo.

over 4 years ago · Santiago Trujillo Relatório

0

Para docker run NO UTILIZAR -it flag

(como dijo BMitch)

Y no es exactamente lo que estás preguntando, pero también sería útil para otros:

Para docker-compose exec use -T flag!

¡La tecla -T ayudaría a las personas que usan docker-compose exec! (Deshabilita la asignación de pseudo-tty)

Por ejemplo:

 docker-compose -f /srv/backend_bigdata/local.yml exec -T postgres backup

o

 docker-compose exec -T mysql mysql -uuser_name -ppassword database_name < dir/to/db_backup.sql
over 4 years ago · Santiago Trujillo Relatório

0

Para aquellos que luchan con este error y usan git bash en Windows, solo usen -it donde funciona perfectamente.

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