도커는 애플리케이션 계층의 추상화로 기술로 컨테이너에서 실행한 응용 프로그램의 실행이 끝나면 컨테이너가 중지된다.
도커 이미지, 도커 파일의 CMD 항목을 통해 컨테이너 실행 시에 응용프로그램을 실행 명령을 설정한다.
Ubuntu 이미지는 linux 운영체제의 기본 쉘 프로그램인 bash 쉘 프로그램을 실행한다.
운영체제 이미지는 컨테이너로 실행 시에 STDIN, STDOUT,STDERR 스트림을 컨트롤 해줘야하는데 해당 컨테이너는 따로 실행중인 응용프로그램이 없기 때문에 표준입력을 받을 수 있게 해야 대기 상태로 실행되고, 그렇지 않으면 종료된다.
docker run -it를 통해 도커를 사용하는 Host PC의 터미널과 도커 컨테이너의 STDIN을 연결해줘야 한다.
-i 컨테이너의 입력(STDIN)을 염
-t 가상 터미널 할당
운영체제 위에 프로그램 이미지를 쌓아 이용하는 컨테이너들은 해당 응용프로그램이 실행중이기 때문에 따로 STDIN을 연결 안하고 run해도 컨테이너가 실행되지만, docker attach로 접근하면 컨테이너의 표준입력이 열려있지 않기 때문에 컨테이너가 종료된다.