X 창을 Docker 컨테이너로 리디렉션

X 창을 Docker 컨테이너로 리디렉션

Docker 컨테이너에서 X 창을 리디렉션하려고 하며 xeyes를 사용하여 테스트하고 있습니다. 우분투 도커 이미지를 사용했습니다.

내 Dockerfile:

FROM ubuntu
RUN apt-get update
RUN apt-get -y install x11-apps

이미지 생성 중:

docker build -t x11 .

컨테이너를 시작하기 전에 X 서버에 대한 모든 연결을 허용하려면 다음을 수행하십시오.

xhost +

X 리디렉션을 테스트했는데 괜찮았습니다.

ssh -X localhost xeyes

시작 컨테이너:

docker run -it --net=host --env="DISPLAY" --volume="$HOME/.Xauthority:/root/.Xauthority:rw" --rm x11 xeyes

그리고 다음과 같은 결과를 얻었습니다.

Error: Can't open display: :0

나는 또한 다음과 같은 방법을 시도했습니다.

docker run -it --net=host --env="DISPLAY" --volume="/tmp/.X11-unix/X0:/tmp/.X11-unix/X0:rw" --rm x11 xeyes

같은 오류가 발생했습니다.

Error: Can't open display: :0

나는 또한 게시 된 솔루션을 시도했습니다.Docker 컨테이너와 공유되는 X11 소켓으로 SSH X-Forward, 그러나 동일한 결과를 얻었습니다.

Centos 7을 호스트로 사용하고 있습니다. 분명히 Centos의 X 서버와 관련된 것입니다. 기본 설치로 Kubuntu 19.04를 사용하여 가상 머신에서 시도하고 도커를 설치했는데 완벽하게 작동했습니다.

업데이트됨:

해당 명령을 루트로 실행합니다.

ausearch -c 'xeyes' --raw | audit2allow -M my-xeyes
semodule -i my-xeyes.pp

그것은 모든 사용자에게 효과적이었습니다!

왜 그런지 아시나요?

답변1

우분투를 사용하는 경우:20.04

나는 -u 0이 podman의 문제를 해결하고 -u $UID가 docker의 문제를 해결한다는 것을 알았습니다.

$podman run -it -u 0 -e DISPLAY="$DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix:rw podman-image xclock

$docker run -it -u $UID -e DISPLAY="$DISPLAY" -v /tmp/.X11-unix:/tmp/.X11-unix:rw docker-image xclock

docker 파일에 x11-apps를 설치하세요.

관련 정보