programing

도커 런 잇 플래그란 무엇입니까?

linuxpc 2023. 8. 4. 22:41
반응형

도커 런 잇 플래그란 무엇입니까?

도커와 복잡한 일을 하고 있었는데, 알고 보니 그게 뭔지 모르겠어요.-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

반응형