Docker 介紹
Docker 是一個(gè)開源的容器化平臺(tái),用于打包、分發(fā)和運(yùn)行應(yīng)用程序。它通過將應(yīng)用及其所有依賴打包到獨(dú)立的容器中,確保應(yīng)用在不同環(huán)境中一致運(yùn)行。Docker 提供快速部署、隔離性強(qiáng)和高效的資源利用,廣泛用于開發(fā)、測試和生產(chǎn)環(huán)境中。
Android in Docker 介紹
宿主機(jī)系統(tǒng)中通過 docker 運(yùn)行 Android 容器。利用 docker 的特性,我們可以將宿主機(jī)的設(shè)備節(jié)點(diǎn)映射到 Android 容器中,使容器和宿主機(jī)共用一套 kernel,從而實(shí)現(xiàn)Android 容器通過直通的方式調(diào)用 RK 平臺(tái)相關(guān)的硬件加速單元:GPU、VPU、NPU、RGA 等。

Android in Docker 部署
宿主機(jī)部署
Firefly 整理多款機(jī)型對應(yīng)的宿主機(jī)固件,用戶只需根據(jù)所使用的具體機(jī)型選擇匹配的固件版本,并進(jìn)行升級(jí),即可輕松完成宿主機(jī)的部署工作。

Android 容器部署
1、若宿主機(jī)已連接互聯(lián)網(wǎng),可通過 SCP 命令將 container 文件夾高效地傳輸至 Linux 宿主機(jī)的 /userdata/ 目錄中
scp -r ./AIC/container root@xxx.xx.xx.xx:/userdata/
2、進(jìn)入容器文件夾
cd /userdata/container
3、初次啟動(dòng)時(shí),執(zhí)行初始化腳本
./aic.sh-i
4、等待初始化完成后,執(zhí)行
./aic.sh -r <安卓鏡像.tgz> <容器數(shù)量>
演示:
注意:網(wǎng)絡(luò)默認(rèn)是采用端口映射方式。
<宿主ip>:1100 --> <容器0>:5555<宿主ip>:1101 --> <容器1>:5555......
宿主機(jī)固件和 Android 容器均已上傳至以下鏈接,請點(diǎn)擊此處下載。提取碼:1234
注:如需對宿主機(jī)或 Android 容器進(jìn)行更深入的定制,可以聯(lián)系業(yè)務(wù)團(tuán)隊(duì)獲取完整的源代碼。
調(diào)試及使用
容器管理
1、查看所有容器(包括已停止的容器)
docker ps -a
2、刪除 Android 容器
docker rm -f
3、停止正在運(yùn)行的容器
docker stop
4、啟動(dòng)一個(gè)已停止的容器
docker start
容器調(diào)試
1、進(jìn)入一個(gè)正在運(yùn)行的容器
docker exec -it sh
2、看容器的 CPU 和內(nèi)存使用情況
docker stats
3、查看所有容器(包括已停止的容器)
docker cp 本地文件 容器ID:容器內(nèi)路徑
4、局域網(wǎng)其他設(shè)備移動(dòng)文件至 docker 容器
adb connect 宿主機(jī)IP:端口號(hào)adb -s 172.16.11.92:1102 push 本地文件 容器ID:容器內(nèi)路徑
注:Firefly默認(rèn) docker 網(wǎng)絡(luò)部署為 docker0 網(wǎng)橋方式,即端口映射方案,如自行修改使用 macvlan 網(wǎng)絡(luò)則 connect 命令需使用容器 IP 加端口號(hào) 5555
adb connect 容器IP:5555
5、網(wǎng)絡(luò)畫面?zhèn)鬏?/p>
使用開源的 scrcpy:
https://github.com/Genymobile/scrcpy
scrcpy -s 容器IP : 端口號(hào)
性能測試
設(shè)備:ITX-3588J(16+128)
固件:ITX-3588J_Ubuntu20.04-Minimal-r3104_v1.3.0c_241107.img
ITX-3588J 上同時(shí)運(yùn)行 6個(gè) Android 系統(tǒng)
1、讓宿主機(jī)運(yùn)行在性能模式
# 出現(xiàn)一個(gè) Invalid argument 是正常的,不用管root@firefly:~# echo performance | tee $(find /sys/devices -name *governor)performancetee: /sys/devices/system/cpu/cpuidle/current_governor: Invalid argument
2、保持 CPU 的良好散熱,保持溫度在 80 攝氏度以下工作
root@firefly:~# cat /sys/class/thermal/*/temp54538563845638455461526925176952692root@firefly:~# cat /sys/bus/cpu/devices/cpu*/cpufreq/cpuinfo_cur_freq18000001800000180000018000002256000225600022560002256000
3、游戲測試演示:
在實(shí)際測試中,我們發(fā)現(xiàn) RK3588 處理器在最高性能狀態(tài)下,通過AIC(Android in Docker)技術(shù)能夠高效并行運(yùn)行多個(gè) Android 系統(tǒng)。然而,當(dāng)同時(shí)運(yùn)行 6個(gè) Android 容器時(shí),由于它們共享 CPU 資源,若這些容器對 CPU 的需求同時(shí)激增,可能會(huì)對用戶體驗(yàn)造成影響。相比之下,運(yùn)行 4個(gè) Android 容器時(shí),CPU 的壓力較為適中,各容器間的影響也相對較小。因此,根據(jù)具體的使用場景和需求,可以靈活決定開啟容器的數(shù)量。
在 AIC 技術(shù)的卓越加持下,F(xiàn)irefly 服務(wù)器潛能得到全面釋放,使用搭載 RK3588 處理器的 Firefly B1 服務(wù)器,在 10 節(jié)點(diǎn)配置下,每節(jié)點(diǎn)獨(dú)立運(yùn)行 6 個(gè) Android 系統(tǒng),實(shí)現(xiàn)了 60個(gè) Android 系統(tǒng)的并行操作,彰顯 AIC 技術(shù)的強(qiáng)大實(shí)力。升級(jí)至 72 節(jié)點(diǎn)的 B2 服務(wù)器,更是高達(dá) 432 個(gè)系統(tǒng),顯著拓展了運(yùn)行 Android 的容器數(shù)量。
-
Android
+關(guān)注
關(guān)注
12文章
3959瀏覽量
129188 -
開源
+關(guān)注
關(guān)注
3文章
3529瀏覽量
43267 -
Docker
+關(guān)注
關(guān)注
0文章
501瀏覽量
12524
發(fā)布評(píng)論請先 登錄
相關(guān)推薦
如何使用 Docker容器化技術(shù)
ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)
ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)
基于docker技術(shù)的工業(yè)App架構(gòu)是如何構(gòu)成的
Docker是什么?
RK3399 docker無法加載IMAGE ID是為什么?
docker基礎(chǔ)知識(shí)和使用bmnnsdk時(shí)的docker常用命令
Docker—簡介與鏡像用法

docker 搜索鏡像,docker查看鏡像詳細(xì)信息(docker下載鏡像命令)
docker部署mysql的壞處
docker核心組件有哪些
ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

評(píng)論