
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를 설치하세요.