728x90
개요
도커를 사용하다 보면 -it 옵션을 자주 사용하게 됩니다.
이는 인터랙티브 모드와 TTY 할당을 위한 옵션인데요, 이 옵션이 정확히 어떤 역할을 하는지 궁금했습니다. 이를 이해하기 위해 간단한 파이썬 프로그램을 도커화하고, Docker의 인터랙티브 쉘 모드를 실습해 보며 해당 컨테이너를 실행해 보겠습니다.
문제 상황
간단한 예제를 위해 파이썬을 사용하여 2개의 숫자를 입력을 받고 그 사이의 랜덤한 값을 출력하는 코드를 컨테이너화 시켜 실행 시 다음과 같은 에러가 발생했습니다.
"EOF when reading a line"에러는 입력 대기 중에 예상치 못하게 파일 끝(EOF, End of File)에 도달했을 때 발생하는 에러입니다.
문제 원인 및 해결
docker run의 기본값은 attach 모드이지만, 이는 출력(stdout), 오류(stderr) 스트림에만 연결됩니다.
사용자의 입력을 받기 위해서는 입력(stdin)도 연결되어야 하는데, 기본 attach 모드에서는 stdin이 연결되지 않아 input() 함수가 정상적으로 동작하지 않습니다.
따라서 input()과 같이 사용자의 입력이 필요한 프로그램을 실행할 때는 stdin 연결을 위한 -i 옵션과 터미널 할당을 위한 -t 옵션이 필요합니다.
docker run 실행 시 -it 옵션 사용
docker run -it [이미지명]
- -i :stdin 스트림 연결
- -t : 가상 터미널(TTY) 할당
- 두 옵션을 통해 사용자 입력 정상 처리 가능
'TIL,일일 회고' 카테고리의 다른 글
[TIL, 일일 회고] 2024.12.29 - 브라우저 주소창의 숨겨진 GET 요청 (0) | 2024.12.29 |
---|---|
[TIL, 일일 회고] 2024.12.28 - Docker --rm 옵션으로 컨테이너 관리 자동화하기 (0) | 2024.12.28 |
[TIL, 일일 회고] 2024.12.26 - 실시간 컨테이너 모니터링: attach와 logs -f 차이점 (0) | 2024.12.26 |
[TIL, 일일 회고] 2024.12.25 - 인스턴스 메서드와 정적 메서드: 차이점과 활용 방법 (1) | 2024.12.25 |
[TIL, 일일 회고] 2024.12.24 - IntelliJ의 Code Insight 기능이란? (0) | 2024.12.24 |