본문 바로가기

About/Docker

[Docker] 오류 해결: 'The input device is not a TTY' 문제 원인과 해결 방법

Docker를 사용할 때 "The input device is not a TTY"라는 오류 메시지가 나타나는 경우가 있습니다.

이 오류는 주로 Docker 컨테이너와 상호작용할 때 발생하며, 특히 CI/CD 파이프라인이나 스크립트에서 Docker 명령을 실행할 때 자주 발생합니다.

오류의 원인

  • TTY(Teletype)는 전통적으로 텍스트를 입력하고 출력하는 장치를 가리키는 용어입니다. 현대 컴퓨팅에서는 터미널 또는 명령줄 인터페이스를 의미합니다. Docker에서 이 오류 메시지는 Docker 명령이 TTY 또는 인터랙티브 쉘에 연결되어 있지 않을 때 발생합니다.
  • 스크립트 실행 중: 배치 스크립트 또는 CI/CD 파이프라인에서 docker run 또는 docker exec 명령을 실행할 때 이 오류가 발생할 수 있습니다.
  • 옵션 누락: Docker 명령에서 t 또는 i 옵션이 누락되었을 때 발생합니다. t는 가상 TTY를 할당하고, i는 STDIN을 열어 인터랙티브한 세션을 가능하게 합니다.

해결 방법

1. 명령 옵션 추가

오류를 해결하는 가장 간단한 방법은 Docker 명령에 -t-i 옵션을 추가하는 것입니다.

docker run -it <이미지>

 

또는

docker exec -it <컨테이너> <명령>

 

이 옵션들은 Docker에게 가상의 TTY를 생성하고 인터랙티브 모드를 사용하도록 지시합니다.

2. CI/CD 파이프라인에서의 사용

CI/CD 파이프라인에서는 TTY가 필요하지 않을 수 있습니다. 이 경우 -t 옵션을 생략하고 -i 옵션만 사용할 수 있습니다.

docker run -i <이미지>

 

또는

docker exec -i <컨테이너> <명령>

 

추가 참고자료

더 자세한 정보와 공식 문서는 Docker의 공식 웹사이트 Docker Documentation에서 확인할 수 있습니다. 이 문서에서는 Docker 명령어, 옵션, 그리고 다양한 사용 시나리오에 대해 자세히 설명하고 있습니다.