開發與維運

如何使用 Docker 進行編譯和開發

112.jpg
鏡像下載、域名解析、時間同步請點擊 阿里巴巴開源鏡像站

一、Linux環境開發

適用於Linux環境開發者,有專門代碼服務器或虛擬機

1. 安裝docker

$ sudo apt-get install docker-ce

2. 獲取docker鏡像

$ docker pull registry.cn-hangzhou.aliyuncs.com/alios_things/rtos:latest

3. 啟動docker

為其命名alios-docker:

$ docker run -it --privileged --name alios-docker registry.cn-hangzhou.aliyuncs.com/alios_things/rtos /bin/bash

注意:

  • 退出docker後,可用以下命令重新啟動已有docker:
$ docker container start -ia alios-docker
  • 鏡像更新前,需要備份有用的代碼,重新獲取新鏡像並啟動

二、Mac環境開發

適用於無專門代碼服務器或虛擬機,習慣mac本機開發

適用場景一:有linux經驗,代碼編輯與編譯均可在docker環境下進行

1. 下載mac環境下的docker工具包並安裝

打開https://docs.docker.com/toolbox/overview/#whats-in-the-box
5.png
安裝後打開Toolbox的DOCKER CLI, 實際上進入mac 的Terminal, 再繼續下面的操作

2. 獲取docker鏡像

$ docker pull registry.cn-hangzhou.aliyuncs.com/alios_things/rtos:latest

3. 啟動docker

為其命名alios-docker:

$ docker run -it --privileged --name alios-docker registry.cn-hangzhou.aliyuncs.com/alios_things/rtos bin/bash

4. 獲取代碼

  1. 組件化工具獲取:按需選擇適當組件獲取需要的代碼 本地zip文件,或 wget http鏈接(根據所選組件生成源碼下載的鏈接) 獲取
  2. github獲取:將獲取全量代碼
git clone https://github.com/alibaba/AliOS-Things.git -b <release_branch_name>

注意:

  • 退出docker後,可用以下命令重新啟動已有docker:
$ docker container start -ia alios-docker
  • 需要燒機時,配置docker USB設備,參考Windows下的USB設備配置,啟動docker命令中無需-v參數

適用場景二:代碼編輯和調試在mac,編譯和燒錄在docker下進行

與mac場景一比較,需要建立共享目錄,完成代碼在兩種環境中的共享。

1. 下載docker工具

同上

2. 獲取docker鏡像

同上

3. 獲取代碼

推薦組件化工具獲取,將zip包解壓到本機某個目錄下, 如 /Users/xxx/alios

4. 啟動docker

為其命名alios-docker,並指定本機與docker的目錄映射關係: 使用-v 參數 -v <本機代碼所在目錄名>:

$ docker run -it --privileged --name alios-docker -v /Users/xxx/alios:/workspace registry.cn-hangzhou.aliyuncs.com/alios_things/rtos bin/bash

至此,可以達到對/Users/xxx/alios中的代碼進行本地編輯和調試,而編譯時, 轉入docker中的/workspace下,執行

# aos2.1.0以及後續版本
aos make <app>@<board> -c config && aos make 
# aos2.1.0之前版本
aos make <app>@<board>

注意: 需要燒機時,配置docker USB設備,參考Windows下的USB設備配置, 啟動docker命令中-v 參數稍有差別

三、Windows環境開發

適用於無專門代碼服務器或虛擬機, 習慣Windows本機開發

適用場景一:有linux經驗,可工作於linux虛擬機

1. 下載Windows環境下的docker工具包並安裝

打開https://docs.docker.com/toolbox/overview/#whats-in-the-box下載windows下的docker工具
6.png
Toolbox將默認安裝VirtualBox,之後打開Docker Quickstart Terminal進行下面的操作

2. 獲取docker 鏡像

$ docker pull registry.cn-hangzhou.aliyuncs.com/alios_things/rtos:latest

3. 啟動docker

$ docker run -it --privileged --name alios-docker registry.cn-hangzhou.aliyuncs.com/alios_things/rtos bash

4. 獲取代碼

  1. 組件化工具獲取:按需選擇適當組件獲取需要的代碼 本地zip文件,或 wget http鏈接(根據所選組件生成源碼下載的鏈接) 獲取
  2. github獲取:將獲取對應發佈分支的代碼 git clone https://github.com/alibaba/AliOS-Things.git -b

注意: 

  • 退出docker後,可用以下命令重新啟動已有docker:
$ docker container start -ia alios-docker
  • 需要燒錄設備時, 參考Windows場景二中的USB設備配置,docker啟動時,無需-v參數

適用場景二:代碼編輯和調試在windows,編譯和燒錄在docker下進行

與場景一比較,需要建立共享目錄,完成代碼在兩種環境中的共享。

1. 下載docker工具

同上

2. 獲取docker鏡像

同上

3. 獲取代碼

推薦組件化工具獲取,將zip包解壓到本機某個目錄下, 如d:work

4. 啟動docker, 帶目錄共享能力

方式一:創建共享目錄的docker
執行如下腳本,按要求copy命令並執行後即可 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 --privileged --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 --privileged -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
7.png
此時,在windows下可訪問docker裡的內容, 亦可隨意添加內容到docker目錄裡:
8.png

四、配置docker_usb設備

注:如果無燒錄需求, 可忽略此步驟
1)打開Docker Quickstart Terminal (Mac時,可直接使用mac terminal),停止缺省虛擬機:

$ docker-machine stop default

2)打開VirtualBox的管理界面,設置->usb設備->點選“啟用usb控制器”->添加usb設備->確認
9.png
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/ registry.cn-hangzhou.aliyuncs.com/alios_things/rtos bash

6)編譯代碼,使用aos命令燒寫: 比如燒寫適配developerkit板子的helloworld應用的image:

$ aos upload helloworld@developerkit
.......
[INFO]: Firmware upload succeed!

阿里巴巴開源鏡像站 提供全面,高效和穩定的鏡像下載服務。釘釘搜索 ' 21746399 ‘ 加入鏡像站官方用戶交流群。”

Leave a Reply

Your email address will not be published. Required fields are marked *