도커 런 잇 플래그란 무엇입니까?
도커와 복잡한 일을 하고 있었는데, 알고 보니 그게 뭔지 모르겠어요.-it
깃발 수단최근에 우연히 몇 가지 예를 발견했습니다.docker run
나를 약간 혼란스럽게 한 명령.
docker run -itd ubuntu:xenial /bin/bash
내 질문은 글을 쓰는 것이 무엇이 의미가 있는가 입니다.-it
여기에 플래그 지정, 인스턴스화 중에 컨테이너가 실행되는 경우bin/bash
설명서에는 예가 있습니다.
docker run --name test -it debian
설명과 함께
Docker가 컨테이너의 stdin에 연결된 유사 TTY를 할당하도록 지시합니다. 컨테이너에 대화형 bash 셸을 만듭니다.
에 대한 설명-t
도움말 페이지에서 플래그 지정
-t, --tty 유사 TTY 할당
삭제하면-it
다음 기간에 플래그 지정
docker run -d ubuntu:xenial /bin/bash
새로 만든 컨테이너는 수명이 짧습니다.
에docker ps -a
종료됨으로 지정됩니다.
죄송합니다, 제 질문이 꽤 멍청하다면, 인터넷에서 설명을 찾을 수 없습니다(그 점에 대해 상당한 오해가 있습니다).
-it
의 줄임말--interactive
+--tty
당신이docker run
이 명령을 사용하면 컨테이너 내부로 바로 이동합니다.
-d
의 줄임말--detach
그 말은 용기를 작동시킨 다음 분리하는 것을 의미합니다.기본적으로 컨테이너를 백그라운드에서 실행합니다.
편집: Docker 컨테이너를 실행할 경우-itd
둘 다 실행됩니다.-it
옵션을 선택하고 컨테이너에서 사용자를 분리합니다.따라서 실행할 기본 앱이 없어도 컨테이너는 백그라운드에서 계속 실행됩니다.
docker run -it ubuntu:xenial /bin/bash
컨테이너를 대화형 모드로 시작합니다(계속).-it
플래그)와 상호 작용할 수 있습니다./bin/bash
용기의.그 말은 이제 당신이bash
컨테이너 내부의 세션, 그래서 당신은 할 수 있습니다.ls
,mkdir
또는 컨테이너 내부에서 bash 명령을 수행합니다.
여기서 핵심은 "대화형"이라는 단어입니다.플래그를 생략해도 컨테이너는 계속 실행됩니다./bin/bash
하지만 즉시 퇴장합니다이 플래그를 사용하여 컨테이너가 실행됩니다./bin/bash
그리고 인내심을 가지고 당신의 입력을 기다립니다.
플래그가 없는 일반 실행:
[ec2-user@ip-172-31-109-14 ~]$ sudo docker exec 69e937450dab ls
bin
boot
dev
docker-entrypoint.d
docker-entrypoint.sh
etc
명령에 cat과 같은 입력이 필요한 경우 다음을 시도할 수 있습니다.
[ec2-user@ip-172-31-109-14 ~]$ echo test | sudo docker exec 69e937450dab cat
도커 컨테이너로 가는 입력 스트림이 없기 때문에 아무것도 표시되지 않습니다.이는 -i 플래그를 사용하여 수행할 수 있습니다.
[ec2-user@ip-172-31-109-14 ~]$ echo test | sudo docker exec -i 69e937450dab cat
test
이제 bash를 프로세스로 시작한다고 가정해 보겠습니다.
sudo docker exec 69e937450dab bash
프로세스가 컨테이너에서 시작되었기 때문에 아무것도 표시되지 않습니다.플래그를 추가하면 다음과 같은 이점을 얻을 수 있습니다.
[ec2-user@ip-172-31-109-14 ~]$ sudo docker exec -t 69e937450dab bash
root@69e937450dab:/#
하지만 이것은 실제로 도움이 되지 않습니다. 왜냐하면 우리는 우리의 명령을 받고 bash에 의해 수신될 수 있는 입력 스트림이 필요하기 때문입니다.따라서 다음 두 가지를 결합해야 합니다.
[ec2-user@ip-172-31-109-14 ~]$ sudo docker exec -i -t 69e937450dab bash
root@69e937450dab:/# ls
bin boot dev docker-entrypoint.d docker-entrypoint.sh etc hi home lib lib64 media mnt opt proc root run sbin srv sys tmp usr var
root@69e937450dab:/#
소규모 요약:
-bash 프로세스를 우리 단말기에 부착하기 위한 t.
-i는 예를 들어 키보드를 사용하여 STDIN을 통해 컨테이너의 bash로 입력을 전송할 수 있습니다.
-i를 사용하지 않으면 입력이 필요 없는 명령에 사용할 수 있습니다.도커 컨테이너 프로세스를 셸에 부착하지 않으려는 경우 -t 및 bash를 사용할 수 있습니다.
언급URL : https://stackoverflow.com/questions/48368411/what-is-docker-run-it-flag
'programing' 카테고리의 다른 글
Sudo가 없으면 NPM 모듈이 전체적으로 설치되지 않습니다. (0) | 2023.08.04 |
---|---|
[시스템] 유형을 찾을 수 없습니다.IO.압축.압축Level]: 이 유형을 포함하는 어셈블리가 로드되었는지 확인합니다. (0) | 2023.08.04 |
왜 이 CSS 마진탑 스타일이 작동하지 않습니까? (0) | 2023.07.30 |
Invoke-WebRequest로 모든 콘텐츠 표시 (0) | 2023.07.30 |
선 그림에 인라인 레이블을 배치하는 방법 (0) | 2023.07.30 |