2017-04-20 3 views
0

내 Windows 10 시스템 (i5, 8GB, 240GB ssd, 2 & 노트북)에서 Linux 개발 환경 (Java, Intellij Idea, Clojure 및 ClojureScript)을 갖고 싶습니다.Windows 용 도커 컨테이너에서 데스크톱 애플리케이션 실행

  1. 리눅스 VM (하이퍼 V, VM웨어 플레이어 또는 가상 상자를 사용하여), 또는
  2. 고정 표시기 컨테이너는 데스크톱 응용 프로그램을 실행 : 내가 사용할 수 있습니다.

두 번째 옵션을 사용하고 싶습니다. Docker Containers on the Desktop에서, 저자는 사용하여 크롬 브라우저 고정 표시기를 실행합니다

$ docker run -it \ 
--net host \ # may as well YOLO 
--cpuset-cpus 0 \ # control the cpu 
--memory 512mb \ # max memory it can use 
-v /tmp/.X11-unix:/tmp/.X11-unix \ # mount the X11 socket 
-e DISPLAY=unix$DISPLAY \ # pass the display 
-v $HOME/Downloads:/root/Downloads \ # optional, but nice 
-v $HOME/.config/google-chrome/:/data \ # if you want to save state 
--device /dev/snd \ # so we have sound 
--name chrome \ 
jess/chrome 

그는 다른 데스크톱 응용 프로그램을 실행하는 데 적용 할 수 있습니다 사용하지만, 위의 명령 윈도우에서 작동하지 않습니다 Dockerfile. XWindows 서버가 (Windows 10에서) 실행 중이지만 -e DISPLAY=unix$DISPLAY--device /dev/snd 옵션을 변경하는 방법을 알고 싶습니다. 이 명령을 어떻게 작동하도록 바꿀 수 있습니까?

Docker는 Windows에서 Hyper-V Linux VM을 사용하여 실행됩니다. 이 경우 Hyper-V (또는 다른 VM 시스템)의 전체 Linux VM보다 빠르지 않습니까, 아니면 모듈러가 독점적 인 이점입니까?

답변

0

도커 컨테이너와 호스트는 사실상 다른 기계라는 것을 기억하십시오. 도커 컨테이너의 GUI 응용 프로그램을 사용하는 것은 원격 호스트에서 Linux GUI 응용 프로그램을 실행하고 로컬 Windows 호스트에 표시하는 것과 동일합니다.

호스트가 Linux 컴퓨터 인 경우 매우 간단합니다. 호스트가 이미 X 서버를 실행 중입니다. 도커 컨테이너는 X 디스플레이를 호스트로 내보내고 호스트의 X 서버를 사용하여 GUI 응용 프로그램을 실행할 수 있습니다. 그게 당신의 도커 명령입니다.

Windows 호스트에서는 X를 실행하지 않으므로 아무 것도 할 수 없으므로 원하는대로 달성 할 수 있습니다.

옵션은 Windows의 X 서버를 실행하거나 타사 도구를 사용하거나 VNC 또는 RDP와 같은 다른 원격 연결 기술을 사용합니다. 그러나 개발 환경을 원하기 때문에 원활한 환경을 원하며 VNC 또는 RDP 창이 작동하지 않을 것입니다. 그런 다음 Windows에서 X 서버를 실행해야합니다.

가능한 방법은 this answer을 확인하십시오. 또한 질문에 대한 다른 대답을 읽어보십시오. 도커 컨테이너 응용 프로그램에 호스트 X 서버를 사용하면 보안에 영향을 줄 수 있습니다. 호스트 X 서버를 사용하기 때문에 응용 프로그램이 더 이상 실제로는 샌드 박싱되지 않습니다. (내가 어떤 소스에서 XcXsrv X 서버 수 있도록 연결을 사용하고 있습니다)

+0

내가 충분히 구체적이지 않은 것 같아, Windows에서 X 서버를 실행 중입니다. – dilvan

+0

나는 당신이 소리를 주인에게 연결할 수 있다고 생각지 않는다. 디스플레이 부분을 위해 윈도우 호스트의 호스트 이름을 다음과 같이 사용해야합니다 :'-e DISPLAY = kitchen-computer : 0' – infiniteRefactor

1

다음 명령이 작동 :

docker run -d --name firefox1 -e DISPLAY=your-machine-ip-address:0 jess/firefox 

당신이 고정 표시기의 이름을 지정하지 않으려면 --name firefox1을 놓을 수 있습니다. 영화는 정상적으로 작동하지만 소리가 들리지 않습니다. 누구든지 여기에서 도울 수 있니?

다른 Xservers도 작동해야합니다. 모든 소스의 연결을 허용해야합니다.이 설정은 개방형 네트워크에서 보안 위협이 될 수 있으므로주의하십시오.

관련 문제