【泡泡Docker乐园】使用泡泡Docker基础镜像放心大胆地开发吧!

【泡泡Docker乐园】使用泡泡Docker基础镜像放心大胆地开发吧!

2020-4-7 泡泡推广&编辑组
泡泡Docker乐园,带你进入Docker的狂欢派对

简介:【泡泡Docker乐园】本次将推出一系列便于开发使用的Docker基础镜像集和相关工具链使用教程,消除挡在coding路上的环境障碍。

编译:王琛

审核:刘富强,邱笑晨,吴奇,王强

欢迎个人转发朋友圈;其他机构或自媒体如需转载,后台留言申请授权

1.前言

相信大部分人在coding路上都遇到过这些问题:一不小心就把系统弄坏了不能开机,和别人合作coding环境总是不能一致,每次换电脑或者装系统都要再配一次环境,这个大佬开源的代码环境和我不一样,等等。同样的,对于Docker入门者而言,尤其是对于SLAM相关开发研究人员而言。Docker本身没有可视化界面,也不能直接通过默认Docker设置获取开发环境,看到这么好的工具想进一步使用下去学习成本比较高。

考虑到这样的种种问题,泡泡制作了一系列方便大家用于开发的基础镜像,并释出相关教程来方便大家的开发。相信无论是刚上路的新手还是老练的工程师都能从中受益。

我们这次的工作相关优势有:

  • (1) 拥有可视化界面,对于SLAM和相关领域来说,可视化是必不可少的
  • (2) 可以使用SSH接入,大部分的coding工具都有使用SSH获取远程环境进行开发的功能,也是今天我们要将的开发环境设置方式
  • (3) Docker基础镜像容易扩充,我们发布的镜像基本是最小集,大家可以按照自己的需求对其环境进行补充
  • (4) Docker环境易于同步和保存,不管是换电脑还是与人合作,只要使用同样的Docker镜像环境就是一致的

(5) Docker不会影响本地环境,无论你是新手想要开始学习,还是你想运行各种环境不同的程序,放手去干吧!
后文我们将按顺序介绍泡泡本次的Docker基础镜像集和具体的开发设置。

2.泡泡Docker基础镜像集

本次泡泡总共发布三个系列的Docker基础镜像集:

(1) 使用xfce桌面的ubuntu镜像集,具有比较完整的桌面环境,适合新手进行学习开发。可以通过以下命令获取

$ docker pull optsolution/ubuntu-xfce-vnc

(2) 在(1)基础上安装有ROS的desktop-full版本的镜像集。可以通过以下命令获取

$ docker pull optsolution/ros-vnc

(3) 丢掉笨重的完整桌面,同时使用轻量的openbox支持可视化功能的镜像集。可以通过以下命令获取

$ docker pull optsolution/ubuntu-openbox-vnc

这几个镜像集除了刚刚提到的差异之外,使用的方法一致,在此使用ubuntu-xfce-vnc作为例子详细描述一下。

2.1 Headless模式:

如果你只想要使用最基础的功能,那么最简单的命令就是

$ docker run -it optsolution/ubuntu-xfce-vnc

然后你就可以使用容器的命令行继续工作了。

2.2 VNC模式:

如果你想要看到桌面,那么可以使用命令

$ docker run -it -p 5900:5900 optsolution/ubuntu-xfce-vnc

然后打开你的VNC viewer,输入 :5900 就可以看到桌面了。如下图所示
在这里插入图片描述使用同样的方法使用optsolution/ros-vnc,可以尝试打开rviz。如下图所示
在这里插入图片描述
如果你使用的是ubuntu-openbox-vnc,会到看一片漆黑。不要担心出错了,此时你可以在里面右键操作打开终端等窗口,如下图所示
在这里插入图片描述
在这里插入图片描述
如果你觉得分辨率不太好,想设置自己合适的分辨率,可以使用类似如下命令

$docker run -i -t -p 5900:5900 -e RESOLUTION=1920x1080 optsolution/ubuntu-xfce-vnc

其中 RESOLUTION=width x height,可以自行设置

2.2 SSH模式

如果你希望使用SSH连接由optsolution/ubuntu-xfce-vnc镜像生成的容器,或者你希望按照我们后续的教程进行开发,你可以使用如下的命令

$ docker run -it -p 2222:22 optsolution/ubuntu-xfce-vnc

细心的你应该看到了终端中提示的ssh登陆密码,你可以再开启另一个终端并且使用命令

$ ssh root@localhost -p 2222

然后复制刚刚提示的密码进行连接。当然如果只是终端连接的话未免太无趣了,这样就和Headless模式一样的。重点是这个内容和下部分的开发教程有关。
在这里插入图片描述

SSH模式中有一个已知的问题,如果切换了不同镜像再使用SSH连接的话可能会遇到如下错误

WARNING: REMOTE HOST IDENTIFICATION HAS CHANGED!

原因是和之前保存的密钥冲突。如果你使用的是linux系统,根据提示,打开 ~/.ssh/known_hosts 文件,并删除其中 ecdsa 相关字样的条目就可以了。其他系统应该在ssh软件目录下有类似的文件。

与VNC模式设置分辨率类似,如果你想自己设置ssh密码,可以通过 -e 参数设置SSHPW变量。例如, -e SSHPW=abc123

2.3 同时使用以上所有模式

细心的同学应该发现了以上模式不是必须独立使用,而是可以同时使用的,至少Headless模式一直存在。你可以使用如下命令同时开启三种模式

$ docker run -it -p 5900:5900 -p 2222:22 optsolution/ubuntu-xfce-vnc

分辨率和ssh密码设置的参数也可以加入进来,这里不再赘述。

由系统分配端口

如果年希望由系统分配端口而不是自己指定端口,你可以使用如下命令

$ docker run -it -P optsolution/ubuntu-xfce-vnc

此时你需要使用如下命令查询端口

$ docker port [container_id] [port_id]

如果这里的[port_id]为22,查询的是ssh的端口。如果这里的[port_id]是5900,查询的是vnc的端口。注意使用ssh和vnc viewer的时候输入的参数要对应改变。

3. 开发工具设置(vs code为例)

拉取了泡泡Docker开发基础镜像集之后还不能直接进入开发,首先得配置自己需要的环境。大家按照上面的教程,不管是使用可视化桌面也好,或者是使用命令行也好,都可以放心大胆的配置自己需要的环境。具体内容在此不过多说明。

首先,代码是放在本地系统中的。我们不可能把代码放到镜像中,因为我们不可能频繁更新镜像,最好是环境配置好了以后镜像就不再改变了。所以我们选择使用挂载的方式将本地的代码挂在到容器中。

配置好了环境之后就需要进行开发工具的配置了,以vs code为例介绍两种方案。

第一种是看起来只有vs code支持的插件种类。请先安装图中给出的插件。

在这里插入图片描述
看名字就知道了,这个插件就是用来直接连接docker容器的工具。此时开启一个容器,使用-v参数挂载上自己的代码,类似如下的命令

$ docker run -it -p 5900:5900 -v /home/cwang/code/test:/home/test optsolution/ubuntu-openbox-vnc

当然,是否选择使用vnc或者ssh工具由你自己决定。然后打开vscode,点击左下角的这个蓝色标签

在这里插入图片描述
在弹出的选项中选择 Remote-Containers:Attach to Running Container… 然后选择刚刚启动的容器。此时会自动打开一个新的vs code窗口并自动设置开发环境。当环境自动设置好了以后选择自己的代码挂载的路径就可以了。此时可以看到左下角的蓝色标签写上了对应镜像的名字,此时开启vs code的终端可以看到已经是容器的环境了。接下来就可以尽情开发了。

第一种方案目前只看到vs code有这种功能,只要使用该插件,不需要其他的工具就可以直接使用容器中的环境进行开发。该插件还有其他很多种玩法大家可以自己尝试。
这里跑一个简单的读取再显示的小demo给大家看看效果。请注意,如果程序是带显示的请在vnc viewer中运行。
在这里插入图片描述
第二种方法是使用SSH连接。虽然不及第一种更方便,但是大多数常用的IDE都有这样的功能,因此使用范围比较广。同样的这里还是以vs code为例介绍,其他IDE的类似使用方法可以参考各自的文档。

在vs code中安装如下插件
在这里插入图片描述

首先还是启动一个容器,并将自己的代码挂载到容器中,和第一种方法不同的是,此时必须使用ssh模式。即使用类似如下命令

$ docker run -it -p 2222:22 -v /home/cwang/code/test:/home/test optsolution/ubuntu-openbox-vnc

同样的还是点击左下角的蓝色图标,这次是选择 Remote-SSH:Connect to Host… 。然后输入root@[ip]:[port],比如root@localhost:2222,如果报错可以参照上部分提到的方案解决。和第一种方法类似,按照指示确定并输入密码就可以连接到容器环境。等待环境自动配置完毕,选择自己挂载的文件夹就可以开始coding了。

总结

本次泡泡给大家释出了几个Docker基础镜像集方便大家开发,主要集成了vnc和ssh等方便开发调试的功能。同时介绍了如何配置开发工具的方法。

希望大家在coding的路上更加顺利!

  • 0
    点赞
  • 5
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值