使用 Docker 开发
更新时间:2019-02-01 16:43:03
本文推荐docker下进行日常开发和编译。
Docker基本命令参考:这里
Linux环境开发
适用于Linux环境开发者,有专门代码服务器或虚拟机
安装docker
$ sudo apt-get install docker-ce
获取docker镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/alios_things/rtos:latest
启动docker
为其命名alios-docker:
$ docker run -it --name alios-docker registry.cn-hangzhou.aliyuncs.com/alios_things/rtos /bin/bash
注意:
1)退出docker后,可用以下命令重新启动已有docker:
$ docker container start -ia alios-docker
2)镜像更新前,需要备份有用的代码,重新获取新镜像并启动
Mac环境开发
适用于无专门代码服务器或虚拟机, 习惯mac本机开发
适用场景一:有linux经验,代码编辑与编译均可在docker环境下进行
下载mac环境下的docker工具包并安装:
打开https://docs.docker.com/toolbox/overview/#whats-in-the-box
安装后打开Toolbox的DOCKER CLI, 实际上进入mac 的Terminal, 再继续下面的操作。
获取docker镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/alios_things/rtos:latest
启动docker
为其命名alios-docker:
$ docker run -it --name alios-docker reg.docker.alibaba-inc.com/alios_things/rtos_dev bin/bash
获取代码
1) 组件化工具获取:按需选择适当组件获取需要的代码,参考文档链接
wget
2) github获取:将获取全量代码,不推荐
git clone
注意:
1) 退出docker后,可用以下命令重新启动已有docker:
$ docker container start -ia alios-docker
2) 需要烧机时,配置docker USB设备,参考Windows下的USB设备配置, 启动docker命令中无需-v参数
适用场景二:代码编辑和调试在mac,编译和烧录在docker下进行
与mac场景一比较,需要建立共享目录,完成代码在两种环境中的共享。
下载docker工具
同上
获取docker镜像
同上
获取代码
推荐组件化工具获取,将zip包解压到本机某个目录下, 如 /Users/xxx/alios
启动docker
为其命名alios-docker,并指定本机与docker的目录映射关系:
使用-v 参数 -v <本机代码所在目录名>:
$ docker run -it --name alios-docker -v /Users/xxx/alios:/workspace reg.docker.alibaba-inc.com/alios_things/rtos_dev bin/bash
至此,可以达到对/Users/xxx/alios中的代码进行本地编辑和调试,而编译时, 转入docker中的/workspace下,执行 aos make <app>@
注意:
需要烧机时,配置docker USB设备,参考Windows下的USB设备配置, 启动docker命令中-v 参数稍有差别
Windows环境开发
适用于无专门代码服务器或虚拟机, 习惯Windows本机开发
适用场景一:有linux经验,可工作于linux虚拟机
下载Windows环境下的docker工具包并安装
打开https://docs.docker.com/toolbox/overview/#whats-in-the-box下载windows下的docker 工具
安装后打开Toolbox的DOCKER CLI, 实际上进入mac 的Terminal, 再继续下面的操作
获取docker 镜像
$ docker pull registry.cn-hangzhou.aliyuncs.com/alios_things/rtos:latest
启动docker
$ docker run -it --name alios-docker reg.docker.alibaba-inc.com/alios_things/rtos_dev bash
获取代码
1) 组件化工具获取:按需选择适当组件获取需要的代码,参考文档链接
wget
2) github获取:将获取全量代码,不推荐
git clone
注意:
1)退出docker后,可用以下命令重新启动已有docker:
$ docker container start -ia alios-docker
2)需要烧录设备时, 参考Windows场景二中的 配置docker usb设备,docker启动时,无需-v参数
适用场景二:代码编辑和调试在windows,编译和烧录在docker下进行
与场景一比较,需要建立共享目录,完成代码在两种环境中的共享。
下载docker工具
同上
获取docker镜像
同上
获取代码
推荐组件化工具获取,将zip包解压到本机某个目录下, 如d:\work
启动docker, 带目录共享能力
方式一:创建共享目录的docker
执行如下脚本,按要求copy命令并执行后即可
download: set_share_folder.zip
例如:需要做 d:\work与 docker中的/workspace的目录共享,执行脚本后,命令如下:
1)脚本执行后,自动停在虚拟机终端:
$ sudo mkdir –parents /d/work
$ sudo mount –tvboxsf d/work /d/work/
$ exit
2)退出后回到windows命令行,启动AliOS docker:
$ docker run -it --name alios-docker -v /d/work:/workspace/ registry.cn-hangzhou.aliyuncs.com/alios_things/rtos bash
这样就启动了一个AliOS Things的docker, 之后可以在docker环境里进行编译开发.
注意:Windows下取消共享目录命令:
C:/Program Files/Oracle/VirtualBox/VBoxManage.exe sharedfolder remove default --name d/work
方式二:利用samba服务的docker
1)创建存储volume, 便于与docker下的目录共享:
$ docker volume create --name aos-vol
2)启动docker:为其命名alios-docker,并-v指定volume目录映射到docker中的/workspace
$ docker run -it -p445:445 --name alios-docker -v aos-vol:/workspace/ registry.cn-hangzhou.aliyuncs.com/alios_things/rtos bash
3)安装samba并配置, 此时已进入docker环境:
$ apt install samba
$ vim /etc/samba/smb.conf #在文件最后添加以下内容
[alios]
path = /workspace
public = yes
case sensitive = yes
map archive = no
only guest = yes
writable = yes
force user = aosuser
force group = aosuser
$ groupadd -g 1000 aosuser #添加分组,与上面指定的分组名保持一致
$ useradd -m -u 1000 -g 1000 aosuser #添加用户,与上面指定的用户名保持一致
4)启动samba daemon:
$ /usr/sbin/smbd
5)获取docker的虚拟IP: 回到Docker Quickstart Terminal里查看ip
$ docker-machine ip
192.168.99.100
6)配置网络连接:在windows下按win+R键,调出运行窗口,输入ip
此时,在windows下可访问docker里的内容, 亦可随意添加内容到docker目录里:
配置docker usb设备
注:如果无烧录需求, 可忽略此步骤
1)打开Docker Quickstart Terminal (Mac时,可直接使用mac terminal),停止缺省虚拟机:
$ docker-machine stop default
2)打开VirtualBox的管理界面,设置->usb设备->点选“启用usb控制器”->添加usb设备->确认
3)重新运行缺省虚拟机:
$ docker-machine start default
或者打开一个新的Docker Quickstart Terminal
$ docker-machine ssh default
4)检测usb设备:连线后使用下面命令进行检测
$ dmesg | grep1 usb
........
[ 19.942282] usb 1-2: cp210x converter now attached to ttyUSB0
5)欲使用usb设备的功能,启动docker时需添加新的启动参数--privileged,而-v参数根据目录共享需要添加:
$ docker run -it --privileged --name alios-things -v /d/work:/workspace/ reg.docker.alibaba-inc.com/alios_things/rtos_dev bash
6)编译代码,使用aos命令烧写: 比如烧写适配developerkit板子的helloworld应用的image:
$ aos upload helloworld@developerkit
.......
[INFO]: Firmware upload succeed!