런아이 vs 런잇?

런아이 vs 런잇?

저는 Windows에서 boot2docker를 사용하고 있습니다. 나는 다음 명령을 시도했다

  docker run -i centos /bin/bash

  docker run -it centos /bin/bash

둘 다 동일한 유형의 실행을 제공합니다. -i가 대화형 모드라는 것을 읽었습니다. -t는 터미널 모드입니다. 하지만 -i 및 -it 에서 pwd및 같은 명령을 실행할 수 있습니다. ls생성된 UI만 다릅니다.

그렇다면 이 두 플래그는 무엇에 사용됩니까? 내가 뭐 놓친 거 없니?

답변1

docker -i비대화형 쉘을 제공합니다( -i의미인터렉티브bash가 아닌 docker와 함께 작동합니다.)

다음 명령을 실행하여 이를 확인할 수 있습니다(bash가 대화형인 경우 변수가 $-포함됨 i).

echo $- |grep i && echo i am interactive || echo i am non-interactive

이 비대화형 bash는 명령 프롬프트를 표시하지 않으며, 장기 실행 명령이 언제 작업을 완료했는지 알기 어렵고, 명령 기록을 사용할 수 없으며, tty 기반 프로그램은 엉망처럼 보입니다.

vim(불평하고 Output/Input is not a terminal, 이상하게 보이고, 행동하는) 또는 rogue유사한 게임(예: crawl일을 거부하는 것) 을 시도해 보세요 .

반면, 일반 대화형 셸 docker -it에는 명령 프롬프트( 조정 가능 $PS1) 및 명령 기록( 포함 )이 제공됩니다. Ctrl-r명령이 완료되면 프롬프트로 인해 명확하게 표시되며 tty가 필요한 프로그램은 정상적으로 작동합니다.

따라서 셸에 명령을 수동으로 입력하려면 docker -it.

관련 정보