ROS Docker容器修改无法持久化,求助保留配置的方法
解决Docker容器修改不保留及xhost报错问题
一、保留容器修改的两种方法
方法1:提交现有容器为新镜像(快速临时方案)
- 先确认容器状态,若已退出则先启动:
# 查看所有容器,找到目标容器的ID或名称 docker ps -a # 启动容器 docker start <容器ID/名称> - 在宿主机执行提交命令,把容器的修改打包成新镜像:
docker commit <容器ID/名称> <新镜像名:标签> # 示例:docker commit abc123 my-ros-galactic:v1 - 修改
docker_run.sh里的CONTAINER_IMAGE为新镜像标签,比如CONTAINER_IMAGE="my-ros-galactic:v1",再运行脚本即可保留之前的配置。
方法2:用Dockerfile构建自定义镜像(推荐长期方案)
提交镜像的方式不利于长期维护,用Dockerfile记录所有配置步骤更靠谱:
- 在宿主机创建
Dockerfile,写入你的配置命令(根据实际操作修改):# 基于原镜像 FROM dustynv/ros:galactic-pytorch-l4t-r32.7.1 # 添加你在容器内执行的配置命令,比如: # RUN apt-get update && apt-get install -y 你的软件包 # RUN pip install 你的Python依赖库 # COPY 本地需要同步的文件 容器内路径 - 执行构建命令生成新镜像:
docker build -t my-ros-galactic:v1 . - 同样修改
docker_run.sh的镜像标签为新镜像,运行脚本即可。
二、解决xhost报错问题
你遇到的xhost: unable to open display ""等错误,是因为脚本尝试配置图形界面转发但宿主机X11权限未设置好,解决步骤:
- 在宿主机执行命令,允许本地用户访问X服务器:
xhost +local:root - 若
~/.Xauthority文件不存在则创建并设置权限:touch ~/.Xauthority chmod 600 ~/.Xauthority - 重新运行
./docker_run.sh,该报错即可消失。
内容的提问来源于stack exchange,提问作者Aotearoa_DEV
相关产品推荐
相关产品推荐

