docker-image配置ubuntu18.04+ROS-Melodic+opencv(python2)带显示界面运行环境(agx)

1、根据agx内核版本,拉取镜像(本次配置的为Jetpack4.5[L4T 32.5.0])
docker镜像ROS-Melodic网址
命令:docker pull 用户名/项目名:版本号

docker pull dustynv/ros:melodic-ros-base-l4t-r32.5.0

2、查看拉取的镜像:sudo docker images
用镜像生成容器:

sudo docker run -it \
--network host \
--runtime nvidia \
-e QT_X11_NO_MITSHM=1 \
--privileged=true \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
dustynv/ros:melodic-ros-base-l4t-r32.5.0 \
/bin/bash

查看生成的容器:sudo docker ps -a
开启容器:sudo docker start "容器ID"
进入容器:sudo docker attach "容器ID"
3、拷贝代码并安装相关依赖包
sudo docker cp “本地文件夹或者文件” 容器ID:“docker中的位置”
对于ROS-Melodic,默认使用python2,所以相关依赖包都使用pip安装。
pip install opencv-python 不可用时
可使用sudo apt-get install opencv-python
根据提示安装完相关依赖包,然后进行把配置好环境的容器保存为新的docker image。
4、生成docker image,并进行压缩移植
生成镜像:docker commit [OPTIONS] CONTAINER [REPOSITORY[:TAG]]

docker commit -m="描述信息" -a="作者名字" "容器ID" "生成镜像的REPOSITORY:TAG"

-a :提交的镜像作者;
-c :使用Dockerfile指令来创建镜像;
-m :提交时的说明文字;
-p :在commit时,将容器暂停。

压缩镜像:

docker save -o “压缩镜像名字.tar” "镜像的REPOSITORY:TAG"

docker文件位于 /var/lib/docker
复制镜像文件:sudo cp “目录+压缩镜像名字.tar” "镜像ID"
5、把镜像移植到其它机器:docker load < “压缩镜像名字.tar”
生成容器:

sudo docker run -it \
--network host \
--runtime nvidia \
-e QT_X11_NO_MITSHM=1 \
--privileged=true \
-v /tmp/.X11-unix:/tmp/.X11-unix \
-e DISPLAY=$DISPLAY \
dustynv/ros:melodic-ros-base-l4t-r32.5.0 \
/bin/bash

进入容器,运行相关命令

6、代码运行中如果有调用显示界面,可能会出现“

QXcbConnection:Could not connect to display :0
Could not connect to any X display.

在启动容器前,在终端运行xhost +local:docker 赋权限即可
有可能在本机和docker终端都需要设置export DISPLAY=:0
可以用echo $DISPLAY查看下是否都为:0,不是则进行配置

  • 1
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 1
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值