docker-컨테이너에서 x 데스크탑을 실행하는 방법은 무엇입니까? startx다시 시도합시다 . 커서를 중앙에 놓고

여러 게스트 OS를 실행하도록 Linux 시스템을 설정하려고합니다. 하나는 Windows VM이고 다른 하나는 Linux 컨테이너입니다. 여기서 목표는 기본 운영 체제를 자유롭게 운영하고 호스트 하드웨어를 사용하면서 호스트 시스템을 엉망으로 만드는 것을 방지하는 것입니다. 결국 컨테이너에서 데스크톱을 실행하는 것 외에도 그래픽 가속 시뮬레이션 등을 실행하려고합니다. Docker에는 컨테이너와 같은 git 같은 버전의 컨테이너가 내장되어 있으므로 사용하는 것이 좋습니다. libvirt는 LXC와 마찬가지로 잘 작동하지만 docker의 권한 모드는 컨테이너에 장치를 구성하지 않아도됩니다.

나는 약간의 연구를 해왔고 이미 몇 가지 대답을 생각해 냈지만 모두 통합하는 데 어려움을 겪고 있습니다.

LXC의 배경

LXC에서 X를 실행 하면 다음과 같이 컨테이너를 구성하는 방법을 알 수 있습니다.

lxc.cgroup.devices.allow = c 226:0 rwm

그리고 사용

mknod -m 666 dri/card0 c 226 0

컨테이너 내부에서 호스트 장치에 연결합니다.

도커

에서 CUDA – 고정 표시기 컨테이너에서 GPU를 사용하여 , 나는이 LXC 백엔드와 부두 노동자의 작업에 동일한 설정을 얻을 수있는 것을 보았다.

도커 컨테이너가 권한 모드로 실행되면이 추가 구성없이 정상적으로 GPU에 액세스 할 수있는 것으로 나타났습니다. 그래서 기본 시스템을 시작하고 그래픽 드라이버, xorg-server, xorg-xinit 및 창 관리자를 설치하여 테스트했습니다.

첫 시도

# startx
Cannot run from a console (or some message like that)

좋아, 나는 내가 tty2에 있다고 생각했다.

# tty
/dev/console

그것은 내가 기대 한 것이 아닙니다.

# chvt 2
# tty
/dev/tty2

마치 그것이 효과가있는 것처럼 보입니다. # startx다시 시도합시다 . 커서를 중앙에 놓고 창 관리자를 시작했습니다. 마우스 반응이 없습니다. 키보드 응답이 없습니다. 로 tty를 변경해 봅시다 Ctrl-Alt+F3. 응답 없음. 글쎄, 내가 다시 부팅해야 할 것 같습니다.

두 번째 시도

# tty
/dev/console
# chvt 2
# tty
/dev/console

뭐? 지금 변경할 수 없습니까?

계속되는

다른 시간을 보낸 후에 tty를 변경하고 startx가 컴퓨터를 다시 고정했습니다.

지금 무엇?

그래서 지금은 지나가고 있습니다. 린 호스트 OS를 유지하면서 매일 운영 체제로 실행하기 위해 컨테이너를 사용할 수 있기를 원합니다.

여기에서 권한 모드로 Docker를 사용하거나 명시 적 LXC 백엔드를 사용하고 위에 나열된 옵션을 사용하는 것이 가장 좋습니까?

이미 Windows VM을 관리하기 위해 libvirt (vagrant-libvirt에서)를 사용할 계획이므로이 경우 libvirt 또는 vagrant-LXC를 사용하는 것과 거의 같습니까?

편집 : LXC와 Docker를 읽으면 Docker 및 Docker 컨테이너가 단일 응용 프로그램 환경을위한 것이므로 Docker 대신 LXC를 사용하여 일상 운영 체제로 실행하는 것이 가장 좋습니다. 생각?

편집 : docker와 같이 cgroups 및 mknod 단계를 무시할 수있는 lxc-device 명령이 있음을 발견했습니다. x를 시작하여 시스템을 정지시킬 수 있었지만 지금은 오류가 발생했습니다. 아마도 아무도 거기에없는 것 같아서 결국 이것을 알아낼 수 있습니다.

업데이트 : 마우스가 작동합니다. 게스트에서 xf86-input-mouse 및 xf86-input-keyboard를 설치했습니다. 호스트에서 다음을 실행했습니다.

# lxc-device -n g1 add /dev/input/mice
# lxc-device -n g1 add /dev/dri/card0
# lxc-device -n g1 add /dev/dri/controlD64
# lxc-device -n g1 add /dev/dri/renderD128
# lxc-device -n g1 add /dev/fb0
# lxc-device -n g1 add /dev/tty2

공장!



답변

이 질문 에는 내가 필요한 대답 있었습니다. 물론 lxc-device구성 파일에서 cgroup 정의 대신 사용 했습니다. 그러나 제 경우에는 다른 tty에서 키보드를 시작하면 X에서 키보드가 작동합니다.


답변