Tech/Docker

[Docker][ROS2] ssh server 위의 docker에서 GUI 띄우기 / '/root/.Xauthority': No such file or directory

은가 2022. 7. 8. 19:17

문제 상황

ubuntu에서 GPU가 탑재된 server에 ssh로 접속하고, 그 위에서 docker contatiner 를 실행하여, ROS2의 turtlesim node GUI를 띄워보려고 했는데 "X11 connection rejected because of wrong authentication." 에러가 뜨면서 계속 실패했다.

 

 

시도해 본 것들

예전에 ssh server가 아닌 그냥 GPU가 탑재된 컴퓨터를 쓸 때는 ssh 접속 전 local에서 `$ xhost +` 만 해주면 해결이 되었었는데, 이번에는 xhost의 문제가 아니었다.

 

 

docker run 할 때 주는 -v, -e, 옵션을 이것저것 수정해 보기도 하고, ssh 접속 시 -X 옵션도 주어봤지만, 결국 해결 방법은 ssh server의 Xauthority 파일을 docker container와 연결해 주는 것이었다.

 

 

키워드

docker image 실행 시 xhost, DISPLAY, Xauthority, X11-unix, -v 옵션, -e 옵션을 사용하는 방법들을 잘 알아 둘 필요가 있다.

 

 

해결 방법

1. 먼저 ssh server 내부에서 .Xauthority 파일의 위치를 확인한다.

 

 

2. docker run 할 때 `-v /home/gaeun/.Xauthority:/root/.Xauthority` 옵션으로 적절한 위치에 .Xauthority 파일을 연결해 준다.

 

 

3. local에서 `$ xhost +` 커맨드를 실행해준다.

 

 

4. xeyes GUI로 간단한 테스트를 하기 위해, `$ sudo apt-get install x11-apps` 패키지를 설치해 준다.

 

 

5. `$ xeyes` 커맨드를 실행한다.

 

 

6. 마지막으로 ros2 turtlesim 노드를 실행해 본다.

 

그런데 새로운 문제 발생.......