ROS-学习笔记-06- Docker安装ROS、ROS VNC & Docker常用命令

使用Docker安装ros可以避免需要同时开多个虚拟机模拟不同版本ros和不同版本机器人的情况。

目录

    • 安装Docker
      • DAOCloud一键安装
      • 其他安装方法
      • 注意要卸载旧docker
      • 用户设置问题
    • 拉取ROS镜像
      • 1. Xserver 显示
      • 2. 打包好的VNC镜像
    • 其他版本ros-docker镜像
      • vnc-ros
      • docker-ubuntu-vnc-desktop
      • nvidia-ros-vnc
    • 参考
    • Docker常用命令

安装Docker

DAOCloud一键安装

首先在新装的Ubuntu18虚拟机环境下一键安装Docker:

curl -sSL https://get.daocloud.io/docker | sh

网速比较慢的时候出现了以下警告。

Warning: apt-key output should not be parsed (stdout is not a terminal)
curl: (28) Connection timed out after 300870 milliseconds
gpg: no valid OpenPGP data found.

ROS-学习笔记-06- Docker安装ROS、ROS VNC & Docker常用命令_第1张图片
ROS-学习笔记-06- Docker安装ROS、ROS VNC & Docker常用命令_第2张图片

其他安装方法

1.也可使用Docker官方仓库进行手动安装

$ sudo apt-get update

$ sudo apt-get install \
    apt-transport-https \
    ca-certificates \
    curl \
    gnupg-agent \
    software-properties-common

$ curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -

$ sudo apt-key fingerprint 0EBFCD88

pub   rsa4096 2017-02-22 [SCEA]
      9DC8 5822 9FC7 DD38 854A  E2D8 8D81 803C 0EBF CD88
uid           [ unknown] Docker Release (CE deb) <[email protected]>
sub   rsa4096 2017-02-22 [S]

根据自己系统架构,用uname -a 命令可查看,选择相应的仓库:

  • x86_64 / amd64
$ sudo add-apt-repository \
   "deb [arch=amd64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  • armhf
$ sudo add-apt-repository \
   "deb [arch=armhf] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"
  • arm64
$ sudo add-apt-repository \
   "deb [arch=arm64] https://download.docker.com/linux/ubuntu \
   $(lsb_release -cs) \
   stable"

下载docker引擎

$ sudo apt-get update  
$ sudo apt-get install docker-ce docker-ce-cli containerd.io

或者指定某一个版本的docker引擎下载

$ sudo apt-get install docker-ce=<VERSION_STRING> docker-ce-cli=<VERSION_STRING> 

2.也可使用其他的Shell脚本来安装

$ curl -fsSL https://get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh

注意要卸载旧docker

安装前注意,如果系统上已有docker,必须先卸载旧版:

sudo apt-get remove docker docker-engine docker.io containerd runc

用户设置问题

如果不希望只有root 用户使用 Docker ,则应考虑使用类似以下方式将用户添加到 docker 组:

$ sudo usermod -aG docker your-username

拉取ROS镜像

选取镜像时很简单,ros各个版本的镜像都有,直接dockers pull 就行。
但是docker环境是不含图形界面的。通常有两种做法:

1. Xserver 显示

这个方法甚至可以尝试在windows设备中显示虚拟机、云端服务器内部的docker界面。但是配置方法比较复杂,我当时配置了一下云端的显示,需要做内网穿透。如果是让虚拟机内部的docker将显示传出来,网络模式可以选择NAT或者桥接模式。

选择NAT模式以后,要记得选择高级-端口转发,然后配置相应端口

选择桥接模式以后,虚拟机会有一个内网ip可以与外部的局域网联通。但是docker的ip需要你自己再添加一个虚拟网卡,这样docker才能与外部局域网联通。不添加虚拟网卡的话,docker的显示界面只能映射到虚拟机内部,无法映射出来。

将docker视为host,将接受显示信号的称为主机。

简单的启动方式:

docker run -it \
    --env="DISPLAY" \
    --env="QT_X11_NO_MITSHM=1" \
    --volume="/tmp/.X11-unix:/tmp/.X11-unix:rw" \
    osrf/ros:kinetic-desktop-full \
    rqt
export containerId=$(docker ps -l -q)

主机端运行命令:

xhost +

2. 打包好的VNC镜像

考虑到需要opengl和cuda支持进行加速,所以我决定拉去别的制作的镜像来尝试,避免自己从头安装配置。

首先设置国内镜像,避免速度太慢。

jhl@jhl-VirtualBox:~$ dockerd --registry-mirror=https://docker.mirrors.ustc.edu.cn
INFO[2020-12-21T14:25:27.209278568+08:00] Starting up                                  
dockerd needs to be started with root. To see how to run dockerd in rootless mode with unprivileged user, see the documentation

其他镜像地址:

  • 中国区官方:https://registry.docker-cn.com
  • 网易:http://hub-mirror.c.163.com
  • 中科大:https://docker.mirrors.ustc.edu.cn
  • 阿里云:https://cr.console.aliyun.com/

拉取镜像:

sudo docker pull tiryoh/ros-desktop-vnc:melodic

该镜像含有多个tag,注意选择版本:noetic、melodic、kinetic

启动方式:

sudo docker run -p 6080:80 --shm-size=512m tiryoh/ros-desktop-vnc:melodic

运行成功。
ROS-学习笔记-06- Docker安装ROS、ROS VNC & Docker常用命令_第3张图片

其他版本ros-docker镜像

vnc-ros

docker pull kaixhin/vnc-ros

Ubuntu Core 14.04 + LXDE desktop + Firefox browser + TightVNC server + ROS Jade Desktop Full.

docker-ubuntu-vnc-desktop

拉取:docker pull ct2034/vnc-ros-kinetic-full

运行:docker run -it --rm -p 6080:80 ct2034/vnc-ros-kinetic-full

Docker image to provide HTML5 VNC interface to access ROS kinetic on Ubuntu 16.04 with the LXDE desktop environment.

nvidia-ros-vnc

OpenGL,nvidia-docker2 . 这个是Dockerfile,拉取官方镜像通过Dockerfile配置的。

参考

Install Docker Engine on Ubuntu
harderthan/ros-desktop-full-VNC
ROS Docker Hub :ros官方镜像
dockerTutorialsGUI:ros官方docker教程

Docker常用命令

docker images:查看所有docker镜像
docker run:从镜像运行容器,-p是端口映射, -d是文件目录映射
docker start、stop:启动、关闭容器
docker attatch:连接到容器shell,一旦退出则整个容器关闭
docker exec:连接到容器,可以链接多个,退出时不会影响容器
docker rm:移除容器,可以后面跟容器名或者容器id

你可能感兴趣的:(ROS,linux,docker,roboto)