docker-ros-gui

本文详细介绍了如何在Ubuntu 16.04系统上安装Docker并构建ROS GUI环境,包括拉取ROS镜像、设置环境变量、创建ROS容器。同时,文章还讲解了ROS多机通信的实现,通过主机A和B之间的SVN通信展示容器间的交互,并讨论了文件在Docker容器中的上传和下载方法,以及常见问题的解决方案。
摘要由CSDN通过智能技术生成

主机环境
系统 Ubuntu 16.04

1 安装docker

1.1 在线安装(物理机)
默认使用当前最新版本
1.更新apt包索引:
sudo apt-get update
2.安装以下包以使apt可以通过HTTPS使用存储库(repository):
sudo apt-get install -y apt-transport-https ca-certificates curl software-properties-common
3.添加Docker官方的GPG密钥:
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo apt-key add -
4.使用下面的命令来设置stable存储库:
sudo add-apt-repository “deb [arch=amd64] https://download.docker.com/linux/ubuntu $(lsb_release -cs) stable”
5.再更新一下apt包索引:
sudo apt-get update
6.安装最新版本的Docker CE:
sudo apt-get install -y docker-ce
7.查看当前版本验证是否成功:
docker --version 显示当前版本表示安装成功

2 拉取镜像(物理机)

将拉取的ros镜像,安装x11-apps用于弹出gui,设置display变量,进行build产生新镜像
以下整段一起执行
sudo docker build -t imagename - << EOF
FROM ros:kinetic-robot
WORKDIR /home/nuctech
USER nuctech
ENV DISPLAY :0
CMD imagename
EOF
注释:
ros:kinetic-robot:为ros版本,可根据所需版本获取
imagename :镜像build名称前后保持一致

3 设置环境变量(物理机)

XSOCK=/tmp/.X11-unix
XAUTH=/tmp/.docker.xauth
可以编辑这个文件将以上两个值写入,便可永久生效每次重启后便可不在设置。
vim /etc/environment

4 生成临时文件.docker.xauth(物理机)

在/tmp目录下,生成临时文件.docker.xauth
sudo xauth nlist :0 | sed -e ‘s/^…/ffff/’ | xauth -f $XAUTH nmerge -

5 创建ROS容器(物理机)

sudo docker run -ti --name gui -v X S O C K : XSOCK: XSOCK:XSOCK -p 3306:3306 -p 8080:8080 -v X A U T H : XAUTH: XAUTH:XAUTH -e XAUTHORITY=$XAUTH imagename /bin/bash
如提示输入登录密码,则输入登录密码即可
创建成功自动进入容器
apt-get update(容器内)
apt-get install -qqy x11-apps(容器内)
–name 后为容器名称
–imagename 镜像名称
-p 标识来指定容器端口绑定到主机端口。绑定后访问主机ip:端口便可访问容器程序,若需绑定多个 端口可多次使用-p参数

6 容器导入导出(物理机)

6.1 导出容器–docker export
导出容器快照(建议容器暂停后操作)
sudo docker export -o 容器快照名.tar container_name

sudo docker export container_id > 容器快照名.tar
-o表示输出到
例:使用sudo docker ps -a 查看所有容器
sudo docker ps -a
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
F91CAB8069E4 kinetic-robot … … … … gui
使用以上容器id导出操作如下:
sudo docker export F91CAB8069E4>gui.tar
导出完成后,会产生该快照文件
6.2 导入容器–docker import
可以随时导入容器快照
sudo docker import [options] file|URL|- [REPOSITORY[:TAG]]
例:使用sudo docker images 查看所有镜像信息
sudo docker import gui.tar gui:wqtest
sudo docker images
PEPOSITOTY TAG IMAGE ID CREATED SIZE
gui:wqtest latest 1d90cb6b6694 1min ago 1.51GB
导入镜像后创建容器重复2-5章节

注:gui.tar 导入容器的快照名称
gui:wqtest 为容器导入后设置镜像名称及tag版本

7 ROS多机通信

目标:将2台主机中的容器可相互访问,相互操作
场景:有2台主机主机ip分别是主机A:192.168.28.161 主机B192.168.28.172

主机A:
进入容器中安装SVN客户端
sudo start docker newgui
sudo docker exec -it newgui /bin/bash
apt-get install subversion
主机B
sudo docker run -ti --name gui -p 3690:3690 -v X S O C K : XSOCK: XSOCK:XSOCK -v X A U T H : XAUTH: XAUTH:XAUTH -e XAUTHORITY=$XAUTH imagename /bin/bash
上图3690为SVN服务器默认端口。
apt-get install subversion //安装svn服务器
svnserve --version //显示版本表示安装成功
创建仓库、添加权限 可参考以下连接
https://blog.csdn.net/zengsange/article/details/80618301
svnserve -d -r /usr/svn/ //启动SVN服务
本次用于测试创建仓库名为repository
测试通信:
主机A newgui容器内:
cd /svn/test
svn co svn://192.168.28.172:3690/repository //将主机B gui容器中svn服务器代码checkout到本地,
touch 161.txt /
svn add 161.txt
svn ci -m “192.168.28.161”161.txt
主机B svn容器内
cd /usr/test/repository
svn update
以上操作均成功,表示主机A-newgui容器和主机B-svn容器可通信

8 docker容器中文件的上传与下载(物理机)

8.1 上传文件
sudo docker cp [OPTIONS] SRC_PATH|- CONTAINER:DEST_PATH
[OPTIONS]:保持源目标中的链接
例:sudo docker cp /root/test.txt ecef8319d2c8:/root/
将当前系统/root/test.txt拷贝到容器id为ecef8319d2c8的/root/目录
8.2 下载文件
sudo docker cp [OPTIONS] CONTAINER:SRC_PATH DEST_PATH
[OPTIONS]:保持源目标中的链接
sudo docker cp

openmediavault-docker-gui是一个基于OpenMediaVault和Docker的图形用户界面工具。OpenMediaVault是一个开源的网络附件存储(NAS)解决方案,通过提供基于Web的管理界面来简化存储设备的设置和管理。而Docker是一种轻量级的容器化平台,可以帮助用户轻松地部署和管理应用程序。 openmediavault-docker-gui的目的是为OpenMediaVault提供一个简单易用的界面,方便用户使用Docker来运行各种应用程序。通过该界面,用户可以直观地管理和监控Docker容器,包括创建、删除、启动和停止容器,以及查看容器的状态和日志信息。 通过openmediavault-docker-gui,用户可以无需通过命令行操作来管理Docker容器,大大降低了使用的门槛。它提供了一个直观且易于导航的界面,用户可以通过简单的操作完成复杂的任务,比如安装和配置容器化的应用程序。 此外,openmediavault-docker-gui还提供了一些附加功能,如容器映像的导入和导出、网络设置的配置以及数据卷的管理。用户可以根据自己的需求来进行自定义配置,同时还可以通过插件系统来扩展功能。 总而言之,openmediavault-docker-gui通过提供一个友好的图形用户界面,使得用户能够更方便地管理和使用Docker容器,并且与OpenMediaVault的集成使得整个过程更加简单和高效。它为用户提供了一个强大的工具,帮助他们充分利用容器化技术来构建和管理他们的应用程序。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值