루트 없는 도커 컨테이너에서 GUI 애플리케이션을 실행하는 방법은 무엇입니까?

루트 없는 도커 컨테이너에서 GUI 애플리케이션을 실행하는 방법은 무엇입니까?

호스트 장치에서 실행하면 도커 컨테이너의 GUI 애플리케이션이 제대로 실행됩니다 docker run -it --net=host -e DISPLAY=$DISPLAY <image>. xhost +그러나 루트 없는 dockerd(docker cli를 사용할 때 env 사용)의 경우 DOCKER_HOST=unix://$XDG_RUNTIME_DIR/docker.sockGUI 애플리케이션이 작동하지 않고 메시지가 표시됩니다.

Unable to init server: Could not connect: Connection refused
Error: cannot open display: :0

그렇다면 호스트 디스플레이에 연결할 때 루트와 루트 없는 도커 컨테이너의 차이점은 무엇이며 루트 없는 도커 컨테이너에서 GUI를 사용하는 방법은 무엇입니까?

답변1

Rootless Docker에서는 --net=host.

루트 없는 모드의 알려진 제한 사항:

호스트 네트워크( docker run --net=host)도 RootlessKit에 의해 내부적으로 명명됩니다.

XServer 소켓을 공유하여 표시할 수 있습니다.

docker run -it --volume=/tmp/.X11-unix/:/tmp/.X11-unix/ -e DISPLAY=$DISPLAY <image>

xhost +루트 없는 컨테이너의 UID는 이미 호스트 시스템의 Docker 실행 사용자에 매핑되어 있으므로 필요하지 않습니다 .

관련 정보