docker 내부 gazebo를 원격으로 실행

그래픽 드라이버가 있는 PC를 거실로 옮기고, TV에 연결해서 사용했다. 사용할 때는 좋은데, 원격으로 터미널로 접속하여 gazebo를 실행하기 어려웠다.

172.30.1.71

  • 저사양 PC로 인터넷 겨우 됨.

172.30.1.9

  • 내부 nvidia 그래픽 카드 설치로 무거운 PC
  • 소음 발열 심함.
  • docker로 172.17.0.1로 gazebo를 실행.

목표는 172.30.1.71 pc로 ssh 터미널로 172.30.1.9에 접속한 뒤 docker로 실행중인 gazebo를 172.30.1.71 화면으로 띄우기다.

172.30.1.9에서 sshd_config를 다음과 같이 설정한다.

$cat /etc/ssh/sshd_config
...
#AllowAgentForwarding yes
#AllowTcpForwarding yes
#GatewayPorts no
X11Forwarding yes
X11DisplayOffset 10
X11UseLocalhost  yes
...

X11UseLocalhost no로 설정하면 xauth add 명령어가 실행되지 않는다.

172.30.1.71에서 ssh로 172.30.1.9로 접속한다.

$ cat ~/.ssh/config 

Host rygen3600
	Hostname 172.30.1.9
	ForwardX11 yes

docker container를 다음 옵션으로 실행한다.

nvidia-docker run -it -v /run/user/1000:/run/user/1000 -v /dev:/dev -v /tmp/.X11-unix:/tmp/.X11-unix:ro \
  -v /home/now0930/ros2/test:/home/ros2_test --name foxy\
  --privileged --ipc=host --shm-size=512m --net=host -e DISPLAY=$DISPLAY \
  -e XDG_RUNTIME_DIR=/run/user/1000 --runtime=nvidia \
  osrf/ros:foxy-desktop-custom

docker container에 접속하여 gazebo를 실행하면

x11 connection rejected because of wrong authentication.

에러가 뜬다. docker 외부 계정의 ~/.Xauthority 파일을 docker container root에 복사하면 gazebo가 실행된다.

빈 화면인데 22 프레임이 나온다.

코멘트

댓글 남기기

이 사이트는 Akismet을 사용하여 스팸을 줄입니다. 댓글 데이터가 어떻게 처리되는지 알아보세요.