59 lines
1.5 KiB
Markdown
59 lines
1.5 KiB
Markdown
#### 拉取镜像
|
|
```bash
|
|
docker pull arm64v8/ros:humble
|
|
```
|
|
|
|
#### 启动脚本
|
|
```code
|
|
#!/bin/bash
|
|
|
|
# 允许 Docker 访问 X 服务器(用于 GUI)
|
|
xhost +local:docker
|
|
|
|
# 容器名称
|
|
CONTAINER_NAME="ylhan_ros2_humble"
|
|
|
|
# 检查容器是否存在
|
|
if docker ps -a --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
|
# 容器存在
|
|
if docker ps --format '{{.Names}}' | grep -q "^${CONTAINER_NAME}$"; then
|
|
# 容器正在运行,直接进入
|
|
echo "容器 ${CONTAINER_NAME} 正在运行,进入容器..."
|
|
docker exec -it ${CONTAINER_NAME} bash
|
|
else
|
|
# 容器已存在但未运行,启动并进入
|
|
echo "容器 ${CONTAINER_NAME} 已存在但未运行,启动容器..."
|
|
docker start -i ${CONTAINER_NAME}
|
|
fi
|
|
else
|
|
# 容器不存在,创建并运行新容器
|
|
echo "容器 ${CONTAINER_NAME} 不存在,创建新容器..."
|
|
docker run -it --rm \
|
|
--name ${CONTAINER_NAME} \
|
|
--network host \
|
|
--privileged \
|
|
-e DISPLAY=$DISPLAY \
|
|
-v /tmp/.X11-unix:/tmp/.X11-unix:rw \
|
|
-v /home/ylhan/ros2_ws:/root/ros2_ws \
|
|
-v /dev:/dev \
|
|
arm64v8/ros:humble \
|
|
bash
|
|
fi
|
|
|
|
```
|
|
|
|
#### 环境设置
|
|
宿主机
|
|
```bash
|
|
echo $DISPLAY
|
|
```
|
|
假设输出为nvidia:13.0,在docker内:
|
|
```bash
|
|
export DISPLAY=nvidia:13.0
|
|
```
|
|
复制宿主机home目录下.Xauthority文件到docker中home目录下,使用xeyes测试
|
|
|
|
ros2 docker隔离
|
|
```bash
|
|
export ROS_DOMAIN_ID=79 #设置独立的DOMAIN_ID
|
|
``` |