Wayland와 함께 Fedora 25를 실행한다고 말하면 Gnome-Wayland 데스크탑을 사용한다고 가정합니다.
Gnome-Wayland는 X 응용 프로그램을 지원하기 위해 Xwayland를 실행합니다. Xorg와 마찬가지로 Xwayland 액세스 를 공유 할 수 있습니다 .
예제 명령이 누락 XAUTHORITY
되었으며 언급하지 않았습니다 xhost
. docker의 X 응용 프로그램이 Xwayland (또는 모든 X)에 액세스 할 수있게하려면이 방법 중 하나가 필요합니다. 이 모든 것이 Wayland와 관련이 없으므로 Docker 컨테이너에서 GUI 응용 프로그램 을 어떻게 실행할 수 있습니까?를 참조하십시오 . docker에서 X 응용 프로그램을 실행하는 방법에 대해 설명합니다.
간단히 말해서 xhost를 사용하는 두 가지 솔루션은 다음과 같습니다.
- xhost를 통한 로컬 사용자 액세스를 허용
xhost +SI:localuser:$(id -un)
하고 docker run 옵션을 사용하여 유사한 사용자를 작성하십시오.--user=$(id -u):$(id -g)
- 권장하지 않음 : X에 대한 루트 액세스 허용
xhost +SI:localuser:root
관련 Pitfall : X는 일반적으로 공유 메모리 (X 확장 MIT-SHM
)를 사용합니다. 도커 컨테이너는 격리되어 있으며 공유 메모리에 액세스 할 수 없습니다. 이로 인해 렌더링 결함 및 RAM 액세스 오류가 발생할 수 있습니다. docker run 옵션으로 피할 수 있습니다 --ipc=host
. IPC 네임 스페이스를 비활성화하므로 컨테이너 격리에 영향을줍니다. 비교 : https://github.com/jessfraz/dockerfiles/issues/359
X없이 도커에서 Wayland 애플리케이션 을 실행하려면 Gnome-Wayland 또는 Weston과 같은 실행중인 웨이 랜드 컴포 지터가 필요합니다. Wayland 소켓을 공유해야합니다. 당신은 그것을 발견 XDG_RUNTIME_DIR
하고 그 이름은에 저장됩니다 WAYLAND_DISPLAY
. 으로 XDG_RUNTIME_DIR
만 해당 소유자에 대한 액세스를 허용하면 호스트로 컨테이너에 동일한 사용자가 필요합니다. 예:
docker run -e XDG_RUNTIME_DIR=/tmp \
-e WAYLAND_DISPLAY=$WAYLAND_DISPLAY \
-v $XDG_RUNTIME_DIR/$WAYLAND_DISPLAY:/tmp/$WAYLAND_DISPLAY \
--user=$(id -u):$(id -g) \
imagename waylandapplication
QT5 응용 프로그램도 다음 -e QT_QPA_PLATFORM=wayland
과 같이 시작해야합니다.imagename dbus-launch waylandapplication
도커 의 X 및 Wayland 애플리케이션 용 x11docker 는 모두 하나의 솔루션입니다. 또한 컨테이너 격리를 유지하는 데 관심이 있습니다 (예와 같이 단순히 호스트 X 디스플레이를 공유하면 손실됩니다).
/run/user/1000/wayland-0
개인 데스크탑에 있습니다.