Docker 세계에서 분리 모드는 무엇입니까? 이 기사 Link를 읽었 지만 분리 모드가 무엇을 의미하는지 정확히 설명하지 않습니다.
답변:
-d
옵션을 사용하여 분리 모드에서 Docker 컨테이너를 시작할 수 있습니다 . 따라서 컨테이너가 시작되고 백그라운드에서 실행됩니다. 즉, 컨테이너를 시작하고 시작 후 다른 명령에 콘솔을 사용할 수 있습니다.
분리 모드의 반대는 전경 모드입니다. -d
옵션을 사용하지 않는 경우 기본 모드 입니다. 이 모드에서 실행하는 데 사용하는 콘솔은 docker run
표준 입력, 출력 및 오류에 연결됩니다. 즉, 콘솔이 컨테이너의 프로세스에 연결되어 있습니다.
분리 모드에서는 .NET을 사용하여 도커 컨테이너의 표준 출력을 따를 수 있습니다 docker logs -f <container_ID>
.
두 가지 옵션을 모두 시도하십시오. 컨테이너를 실행하려면 항상 분리 모드를 사용합니다. 좀 더 명확하게 설명 할 수 있기를 바랍니다.
docker logs -f [container_ID] > logs.txt
. 작동하지 않으면 아래 @BMitch가 제안한대로 도커 컨테이너를 시작할 때 '-it'플래그를 추가해보십시오.
docker 명령 줄의 detach 옵션은 docker 클라이언트 ( docker
)가 서버 ( dockerd
)에 요청한 다음 해당 요청이 서버에서 계속되는 동안 클라이언트가 종료 됨을 나타냅니다 . 혼란의 일부는 docker가 단일 프로세스처럼 보이며 실제로는 클라이언트가 모든 명령을 서버로 보내는 REST API의 씬 프론트 엔드 인 클라이언트 / 서버 애플리케이션이라는 점일 수 있습니다.
를 사용 docker container run --detach
하면 컨테이너가 생성되고 서버가 성공하면 컨테이너 ID로 응답하며 다른 명령을 자유롭게 실행할 수있는 동안 컨테이너가 서버에서 계속 실행됩니다. 다른 명령을 계속 실행하는 동안 백그라운드에서 시작하려는 서버 (예 : nginx)에 자주 사용됩니다. --interactive
및 -tty
옵션 (종종 약어 -it
)을 사용하여 컨테이너를 구성 하고 나중에 a docker container attach
를 실행하여 이미 실행중인 컨테이너에 연결할 수 있습니다. (로 실행되는 컨테이너에 연결할 때까지 -itd
컨테이너가를 통과 한 경우 즉시 종료를 트리거하는 입력 끝을 보는 대신 stdin에서 읽는 모든 시도가 중단됩니다 -d
.)
분리 옵션없이 실행하는 경우 클라이언트는 컨테이너가 생성 된 후 즉시 연결 API 호출을 실행하므로 출력을보고 선택적으로 컨테이너에서 실행중인 프로세스에 입력을 제공 할 수 있습니다. 컨테이너가 대화 형 (예 :)을 실행하는 경우 유용합니다 /bin/bash
.
다른 몇 가지 명령 docker-compose up -d
은 전체 프로젝트를 시작하고 백그라운드에서 서버에서 실행되도록하는 것을 포함하여 분리 옵션을 허용합니다 . 또한 docker service
서비스의 대상 상태를 생성하거나 업데이트하기 위해 서버에 변경 사항을 제출 한 후 분리되는 명령 도 많이 있습니다. 분리하지 않으면 클라이언트는 서비스의 현재 상태가 대상 상태와 일치 할 때까지 기다릴 것입니다. 배포 진행 상황. 와 주 docker service
명령, 당신은 통과 할 수 있습니다 --detach=false
부착 된 상태로 유지, 동작은 버전에 따라 지난 한 해 동안 변경되었습니다.
--detach-keys
)
--interactive
와 함께 컨테이너에 연결되어 있는지 확인하십시오 . --tty
-it
docker run -d -t ubuntu:14.04
docker run-docker 이미지에서 docker 컨테이너로 인스턴스를 만듭니다. (로컬에서 이미지를 사용할 수없는 경우 Docker 허브에서 가져옴) ubuntu-이미지 이름
14.04-태그
-d, --detach-분리 모드
-t, --tty-의사 TTY 할당