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

2023-05-16

使用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.

install docker
installdocker2

其他安装方法

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) <docker@docker.com>
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

运行成功。
virtualbox

其他版本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

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

ROS-学习笔记-06- Docker安装ROS、ROS VNC & Docker常用命令 的相关文章

  • Nanopi M4 基于Opencv 打开USB摄像头

    一 环境选择 首次使用Nanopi M4 ARM板 xff0c 最初加载的是官方给的rk3399 sd friendlydesktop bionic 4 4 arm64 20190523 img xff0c 但我最终放弃使用该系统 xff0
  • “学C语言计划”后续

    从上一篇日记 学C语言计划 到现在已经过去了一个季节了 季节翻页 xff0c 而我菜鸟依旧 xff01 连大自然节奏都跟不上 xff0c 这真是要作死的节奏啊 几天前 xff0c 考完了高数和C语言 xff0c 顺便 玩完 了 后天要考英语
  • 解决KEIL中ARM编译器不能编译的问题

    keil编译器出现问题 xff0c 根据提示意思就是ARM编译器选择不对的问题 Target 39 Printf 39 uses ARM Compiler 39 V5 06 update 6 build 750 39 which is no
  • C++ ZeroMQ 发布订阅模式例子跟注意事项

    发布订阅模式 接收端 xff1a void context void subscriber 第一步 xff1a zmq ctx new 创建context对象 context 61 zmq ctx new 第二步 xff1a 创建socke
  • 目标检测算法——anchor free

    一 anchor free 概述 1 先要知道anchor 是什么 xff08 这需要先了解二阶段如faster rcnn xff0c 一阶检测器如YOLO V2以后或SSD等 xff09 在过去 xff0c 目标检测通常被建模为对候选框的
  • 度量学习(Metric learning)—— 基于分类损失函数(softmax、交叉熵、cosface、arcface)

    概述 首先 xff0c 我们把loss归为两类 xff1a 一类是本篇讲述的基于softmax的 xff0c 一类是基于pair对的 xff08 如对比损失 三元损失等 xff09 基于pair对的 xff0c 参考我的另一篇博客 xff1
  • Oauth2知识总结

    官网 xff1a OAuth Community Site OAuth是一个关于授权 xff08 authorization xff09 的开放网络工业标准 xff0c 允许用户授权第三方应用访问用户存储在其它应用上的信息 xff0c 而不
  • 重构技巧之策略模式优化业务代码

    重构技巧之策略模式优化业务代码 策略模式对业务代码进行重构背景分析 在日常的开发过程中 xff0c 我们肯定会遇到很多if else或者switch case的业务代码 xff0c 作为维护这类代码的开发者来说 xff0c 分支太长 xff
  • 64位Ubuntu使用john破解密码的No password hashes loaded

    最近研究了一下Linux的密码破解 xff0c 因为正好在学习computer security 计算机信息安全 这门课 我在使用 john the ripper 的时候遇到了一个问题 No password hashes loaded 今
  • Java常量池详解之抓狂的面试题

    今天My partner问我一个让他头疼的Java question xff0c 求输出结果 xff1a 64 author DreamSea 2011 11 19 public class IntegerTest public stati
  • PC软件问题定位工具-windbg

    windbg工具使用 windbg是微软的工具 xff0c 可以从百度或微软官网获取 工具支持 xff1a 分析dmp文件 定位CPU 内存 崩溃等异常问题 代替VS调试C 43 43 程序 这里主要整理了收集或分析dmp文件的相关命令 x
  • Ubuntu18.04使用RealVNC进行远程桌面连接

    可以直接查看最新的 xff1a RealVNC Server Ubuntu 20 04 无显示器连接 虚拟显示器 捉不住的鼬鼠的足迹 CSDN博客 使用Linux服务器 xff0c 在一般情况下是不太用桌面环境的 不过现在我想着开发用Lin
  • CMakeLists.txt 详解

    目录 CMakeLists txt用例详解 xff08 WDS中的用例 xff09 CMakeLists txt作用 生成对象库OBJECT实例 xff08 wds libwds common CMakeLists txt xff09 生成
  • ubuntu16.10安装numpy, scipy, matplotlib

    在Python3 x中安装numpy sudo apt get span class hljs keyword install span python3 pip pip3 span class hljs keyword install sp
  • Linux进程状态分析

    最近在看APUE过程中 xff0c 遇到了一个有关于进程的 僵死进程 的状态 既然遇到了进程状态的问题 xff0c 索性就查了查 Linux内核设计与实现 xff0c 里面给出了5种状态 xff0c 分别是 TASK RUNNING TAS
  • IDEA自动生成Javadoc代码注释

    在日常写代码时往往不会注重注释的格式 规范等问题 xff0c 可能注释都不会写 xff0c 但是一旦代码完成后要交付他人 xff0c 就需要考虑注释的问题了 xff0c 因为重要函数 方法的注释往往对整个代码的阅读起着十分重要的作用 xff
  • VNC连接远程服务器

    记录探索之路 由于跑深度学习算法 xff0c 需要连接服务器 xff0c 以前都是利用XShell连接 xff0c 也比较好用 xff0c 但是没有界面 VNC可以展示界面 xff0c 更加清晰 xff0c 以下是探索的方法 1 下载软件
  • Linux文件权限管理命令学习

    你必须非常努力 xff0c 才能看起来毫不费力 xff01 微信搜索公众号 漫漫Coding路 xff0c 一起From Zero To Hero 前言 本篇文章主要讨论Linux中的文件权限管理命令 xff0c 包括更改文件权限 文件所有
  • App移动端测试-Fiddler工作场景总结

    文章目录 一 测试思路1 1App测试内容1 2APP功能测试思路 二 Fiddler测试环境配置2 1Fiddler PC配置2 2模拟器端配置2 3模拟器端代理设置 三 Fiddler测试工作应用场景3 1 Fiddler抓包辅助定位B
  • 当Linux配置zh_CN.UTF-8 ,中文还是显示乱码解决办法

    文章目录 一 出现问题的可能原因1 服务器没有安装zh CN UTF 8 字符集2 远程登录软件字符设置 这篇博客主要说明出现问题的原因和解决思路 一 出现问题的可能原因 1 服务器没有安装zh CN UTF 8 字符集 安装对应的软件包就

随机推荐