当前位置:   article > 正文

ubuntu用Dockerfile配置ros+cuda+torch镜像及rviz可视化_docker ros pytorch

docker ros pytorch

dockerfile配置ros+cuda+torch镜像及rviz可视化

Dockerfile

因工作环境,需要有深度学习的那一套环境,还要用到一些可视化的东西,比如rviz、open3d等。
下面从docker hub上找到一个合适的基础镜像,在此基础之上,进行ros的配置,Dockerfile如下:

FROM pytorch/pytorch:1.8.0-cuda11.1-cudnn8-devel
ARG DEBIAN_FRONTEND=noninteractive
RUN sed -i s@/archive.ubuntu.com/@/mirrors.aliyun.com/@g /etc/apt/sources.list

# nvidia-container-runtime
ENV NVIDIA_VISIBLE_DEVICES \
    ${NVIDIA_VISIBLE_DEVICES:-all}
ENV NVIDIA_DRIVER_CAPABILITIES \
    ${NVIDIA_DRIVER_CAPABILITIES:+$NVIDIA_DRIVER_CAPABILITIES,}graphics

RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/cuda/repos/ubuntu1804/x86_64/3bf863cc.pub
RUN apt-key adv --fetch-keys https://developer.download.nvidia.com/compute/machine-learning/repos/ubuntu1804/x86_64/7fa2af80.pub

RUN apt-get update \
  && apt-get install -y lsb-release gnupg

RUN sh -c '. /etc/lsb-release && echo "deb http://mirrors.tuna.tsinghua.edu.cn/ros/ubuntu/ `lsb_release -cs` main" > /etc/apt/sources.list.d/ros-latest.list'
RUN apt-key adv --keyserver 'hkp://keyserver.ubuntu.com:80' --recv-key C1CF6E31E6BADE8868B172B4F42ED6FBAB17C654

RUN apt-get update \
 && apt-get install -y ros-melodic-desktop-full \
 && apt-get install -y vim iputils-ping openssh-server \
 && echo "source /opt/ros/melodic/setup.bash" >> ~/.bashrc \
 && apt-get -y update --fix-missing \
 && apt-get clean \
 && rm -rf /var/lib/apt/lists/*
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
dockerfile创建完成后即可执行docker build生成镜像,在dockerfile文件下开启终端运行:
$ docker build -t docker_image_name .
  • 1
  • 2

创建容器

创建一个shell脚本run_my_image.bash, 一般创建脚本如下,但涉及到rviz可视化显示,需要进容器修改sshd_config参数。

docker run -itd \
	--gpus all \
	--name test \
	--user 123 \
	--shm-size 8g \
    --volume="/work_dir:/work_dir" \ # 宿主机目录:容器目录
    --volume="/data:/data" \
    --runtime=nvidia \
    -p 8888:22 \
    docker_images \
    bash  # bash -c "roscore & rviz"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12

创建一个shell脚本run_my_image.bash

docker run -itd \
	--gpus all \
	--shm-size 8g \
    --env="DISPLAY=$DISPLAY" \
    --env="QT_X11_NO_MITSHM=1" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    --volume="$HOME/.Xauthority:/root/.Xauthority:rw" \
    --runtime=nvidia \
    --name docker_test \
    -p 8888:22 \
    docker_images \
    bash  # bash -c "roscore & rviz"

  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13

这里--net采用默认的bridge模式,如果在其他机器上通过docker exec进入容器rviz界面会在宿主机上显示,并不是在你运行容器的机器上显示,这个问题解决办法:

1、在创建容器的时候加上--net=host,可以解决该问题,但端口映射又会存在无法映射的问题

2、修改sshd_config

vim /etc/ssh/sshd_config
Port 22
PermitRootLogin yes
x11UseLocalhost no
  • 1
  • 2
  • 3
  • 4
修改sshd_config后重启ssh
service ssh start
  • 1
  • 2
设置容器密码:
passwd
  • 1
  • 2
ssh远程连接容器
ssh -X root@ip -p 8888  # ip是宿主机的ip,-p 是映射的端口
进去之后,可以测试rviz可视化
roscore & rviz

  • 1
  • 2
  • 3
  • 4
  • 5
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/小丑西瓜9/article/detail/669739
推荐阅读
相关标签
  

闽ICP备14008679号