원격 컴퓨터에서 컨테이너화 된 GUI 응용 프로그램을 실행하고 싶습니다.
컨테이너에 ssh 호스트를 추가 하여이 문제를 해결하고 싶지 않습니다.
- 이미 SSH를 통해 호스트 시스템에 액세스 할 수 있습니다
- 불필요한 오버 헤드를 추가합니다
- 그것은 원격과 로컬 사용 사이에서 컨테이너를 이식 할 수 없게 만듭니다.
이미 호스트에서 GUI 앱을 성공적으로 실행할 수 있지만 컨테이너 내에서는 불가능합니다. 다음은 지금까지 수행 한 단계입니다.
숙주
xauth +
(장기간은 아니지만 가능한 문제를 제거하는 데 유용합니다)docker-user
호스트에서 uid 501000으로 ==docker-user
네임 스페이스 기능을 통해 컨테이너에서 uid 1000으로.Xauthority
docker-user
홈 폴더로 복사 된 파일
도커 파일
- 알파인 기반
xauth
테스트 목적으로 설치 및xterm
docker-user
적절한 UID / GID로 생성
도커 작성
DISPLAY
전달 된 환경 변수- 볼륨
/home/docker-user/:/home/docker-user/:ro
제공하기 위해.Xauthority
쿠키를 /tmp/.X11-unix:/tmp/.X11-unix:ro
X11 소켓 액세스를 제공하는 볼륨- 명령을 실행합니다
su - docker-user -c "export DISPLAY=$DISPLAY && xterm"
su
로 실행하는 데 사용docker-user
DISPLAY
su
맥락으로 전달
불행히도 아직 충분하지 않습니다. 호스트 OS의 xterm이 문제없이 로컬 X 서버에 연결되는 동안 컨테이너의 xterm은라고 말합니다 Xt error: Can't open display: localhost:10.0
.
"localhost : 10.0"이 정확하고 localhost가 컨테이너에 /etc/hosts
있고 쿠키와 소켓이 올바른 권한으로 통과하고 있음을 확인했습니다.
또 무엇이 잘못 될 수 있습니까?