Docker 内运行rviz2, 源码见附件
1、Host X Server配置
xhost + # 运行此命令,允许X server接受其它客户端的连接:
如果没有执行上述命令,则在docker内部运行rviz2时,会出现如下错误:
2、docker run参数在配置
docker run -it --rm --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v /dev:/dev osrf/ros:jazzy-desktop
osrf/ros: 镜像名字
jazzy-desktop: 镜像的TAG
3、进入docker时挂载目录
挂载目录后,host主机的文件夹将会与docker共享!
4、命令实例
xhost +
docker run -it --rm --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v "$PWD":/sad --name sad sad:v1 /bin/bash
// sad: 镜像名字, v1: 镜像Tag, /sad: 挂载至docker内部后的目录
5、脚本实例
//-------------------------------------------
enter_docker.sh
//-------------------------------------------
#!/bin/sh
MOUNT_DIR="$PWD/slam_in_autonomous_driving-master"
if [ -e "$MOUNT_DIR" ] && [ -d "$MOUNT_DIR" ]; then
echo "文件夹存在"
else
echo "文件夹不存在"
exit
fi
xhost +
docker run -it --rm --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v "$MOUNT_DIR":/sad --name sad sad:v1 /bin/bash
//----------------------------------------------------------------------------------
enter_docker.sh
//----------------------------------------------------------------------------------
#!/bin/sh
# change the mount dir by yourself
#MOUNT_HOST_DIR="$PWD/Eagleye_dataset"
MOUNT_HOST_DIR="/home/flmxi/Desktop/tmp/slam_in_autonomous_driving-master"
MOUNT_DOCKER_NAME="sad"
MOUNT_DOCKER_DIR="/$MOUNT_DOCKER_NAME"
# change the dock image info by yourself
DOCKER_IMAGE_NAME="sad"
DOCKER_IMAGE_TAG_NAME="v1"
if [ -e "$MOUNT_HOST_DIR" ] && [ -d "$MOUNT_HOST_DIR" ]; then
echo "文件夹存在"
else
echo "文件夹:$MOUNT_HOST_DIR 不存在!"
exit
fi
echo "Enter docker!"
xhost +
docker run -it --rm --privileged -e DISPLAY=$DISPLAY -v /tmp/.X11-unix:/tmp/.X11-unix -v "$MOUNT_HOST_DIR":$MOUNT_DOCKER_DIR --name $MOUNT_DOCKER_NAME $DOCKER_IMAGE_NAME:$DOCKER_IMAGE_TAG_NAME /bin/bash
评论已关闭