오류잡기 | the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty' 해결

728x90

 

git bash를 이용하여 docker 실습을 진행하던 중 다음과 같은 오류가 났습니다.

the input device is not a TTY. If you are using mintty, try prefixing the command with 'winpty'

 

git 설치시 터미널 설정을 mintty 로 한 경우 발생하는 오류이기 때문에 위의 에러 메시지에서 추천한대로 winpty 키워드를 사용하거나 powershell을 사용하면 됩니다.

 

 

1. git bash + winpty 키워드 사용

git bash를 그대로 사용하고 싶다면 Docker 컨테이너 내에서 명령어를 실행할 때 winpty 키워드를 붙이면 됩니다.

# 예시
winpty docker exec -ti test /bin/bash

 

2. powershell 사용

winpty 키워드 없이 바로 사용해도 됩니다.

 


 

경로 문제로 실패한 경우

만약 winpty 키워드를 사용했음에도 오류가 났다면 경로에 문제가 있을 수도 있습니다.

저의 경우, /bin/bash의 형태로 절대경로로 지정하여 문제가 발생했습니다.

OCI runtime exec failed: exec failed: unable to start container process: exec: "
C:/Program Files/Git/usr/bin/bash.exe": stat C:/Program Files/Git/usr/bin/bash.e
xe: no such file or directory: unknown

 

해결 방법

- 상대 경로로 지정하기

winpty docker exec -ti test bash

 

/bin/bash와 같은 절대 경로로 지정하면 루트 디렉토리(/)부터 시작하여 파일의 위치를 정확히 지정합니다.

따라서 컨테이너 내에서 해당 경로에 bash 파일이 존재하지 않아 실행되지 않는 경우, 경로 탐색에 실패할 수 있기 때문에  컨테이너 내부의 파일 위치를 정확히 모르거나, 동일한 이름의 파일이 다른 경로에 있을 경우상대 경로 사용하거나 $PATH 환경 변수 설정 경로에서 파일을 찾을 수 있습니다.

 

 

728x90