Search
Duplicate

docker 컨테이너 실행시 -it 옵션의 역할

키워드
Docker
컨테이너
옵션

-it옵션의 역할이 뭘까

docker run [이미지]
C
복사
위의 명령어를 실행시, 컨테이너가 바로 종료가 되는 것을 막기 위하여
docker run -it [이미지]
C
복사
명령어를 사용하여 터미널을 접속하여 사용한다
그렇다면, -it 옵션의 역할은 무엇일까?!

일단 각각의 옵션을 사용해보자

i 옵션으로만 실행했을 경우 (—name 옵션을 통해 컨테이너의 이름을 test_i로 설정)
터미널에 별다른 내용이 표시 되지 않지만, 리눅스 기본 명령어인 ls가 적용되어 명령어의 결과가 출력되는 것을 확인할 수 있다.
또한, exit를 통해 컨테이너 내부를 나가면 컨테이너가 종료되는 것을 확인할 수 있다.
t 옵션으로만 실행했을 경우(—name 옵션을 통해 컨테이너의 이름을 test_t로 설정)
컨테이너 내부를 접속한거와 같이 프롬프트를 확인할 수 있지만, 어떠한 명령어도 동작하지 않는 모습이다.
exit 명령어 또한 동작하지 않아 컨테이너가 종료되지 않는다.
ctrl + z를 통해 프로세스를 일시중지하여 나갈 수 있지만, exit 명령어를 사용했을때와 달리 컨테이너를 여전히 돌고 있다.

it옵션에 대해 정리해보자

i옵션은 interactive으로 표준입력/표준출력/표준오류를 컨테이너에서 받겠다는 의미가 된다.
t옵션은 tty옵션으로 가상 터미널을 이용하여 컨테이너에 접속할 수 있게 해주는 것이다.
그렇기 때문에, i옵션 상황에서 exit 명령어를 사용하면 컨테이너가 종료되지만,
t옵션 상황에서는 사용자의 입력이 컨테이너에 전달되지 않기 때문에 exit 명령어를 통해서 컨테이너가 종료되지 못 하는 것이다.
따라서, i옵션만으로도 컨테이너 내부에 명령어를 사용할 수 있지만, 터미널을 사용하는 것이 아니기 때문에 터미널의 기능(글자색, 프롬프트 등)을 제공 받지 못하는 것이다.

참고자료