인프런 커뮤니티 질문&답변

nathan님의 프로필 이미지

작성한 질문수

풀스택을 위한 도커와 최신 서버 기술(리눅스, nginx, AWS, HTTPS, flask 배포) [풀스택 Part3]

dit d 차이점 질문

해결된 질문

23.11.14 00:41 작성

·

288

0

선생님 안녕하세요

좋은 강의 감사합니다.

 

기초적인 질문일수도 있는데 조금 헷갈려서요

 

docker run -d -p 9999:80 --name httpdweb3 myweb3

이라고 썼을때와

 

docker run -dit -p 9999:80 --name httpdweb3 myweb3

라고 썼을때의 본질적인? 차이점이 무엇인거죠?

it가 터미널 입력을 열어놓고 가상 터미널을 할당하는 옵션 등등 인건 수업자료에 나와있는데, 조금 더 실질적인 차이..?가 잘 안와닿아서요. 질문드립니다!

 

답변 1

0

잔재미코딩 DaveLee님의 프로필 이미지

2023. 11. 15. 10:17

안녕하세요. 답변 도우미입니다.

해당 부분도 가상 tty 까지 해서, 이전 챕터에서 매우 상세히 설명을 드리고 있습니다. 그래서 이전 챕터를 한번 보신다면, 훨씬 이해가 쉬우실꺼예요. 이외에 글로 간결히 각 옵션에 대해 다음과 같이 작성하여 드립니다.

  1. -d 옵션 (docker run -d ...): 이 옵션은 "detached mode"를 의미합니다. 즉, Docker 컨테이너가 백그라운드에서 실행됩니다. 컨테이너가 시작되면, 컨테이너의 ID만 출력되고 터미널은 즉시 사용자에게 제어권을 돌려줍니다. 이 모드에서는 컨테이너의 표준 출력이나 표준 에러를 직접 볼 수 없습니다.

  2. -it 옵션 (docker run -it ...): 이 옵션은 "interactive mode"와 "pseudo-TTY"를 함께 활성화합니다. i는 interactive 모드를 의미하며, 이는 컨테이너의 표준 입력을 열어두어 사용자의 입력을 받을 수 있게 합니다. t는 pseudo-terminal 또는 TTY를 할당하는 것으로, 터미널과 같은 환경을 제공하여 사용자가 컨테이너와 상호작용할 수 있게 해줍니다.

-dit를 사용하면, 컨테이너가 백그라운드에서 실행되면서도(interactive 모드 덕분에) 사용자의 입력을 받을 수 있고, 터미널과 유사한 환경을 제공합니다. 이 옵션은 주로 컨테이너 내에서 쉘에 접속해야 할 때 유용합니다. 예를 들어, docker exec -it [컨테이너 ID 또는 이름] bash 명령을 통해 실행 중인 컨테이너의 쉘에 접속할 수 있습니다.

요약하자면, -d만 사용할 경우 컨테이너는 백그라운드에서 "조용히" 실행되고, -dit를 사용할 경우에는 백그라운드에서 실행되면서도 사용자의 입력을 받을 수 있는 터미널 환경을 제공합니다. 이 차이는 컨테이너를 관리하고 상호작용하는 방식에 영향을 미칩니다.

감사합니다.

nathan님의 프로필 이미지

작성한 질문수

질문하기