Docker 介紹
Docker 是一個開源的容器化平臺,用于打包、分發和運行應用程序。它通過將應用及其所有依賴打包到獨立的容器中,確保應用在不同環境中一致運行。Docker 提供快速部署、隔離性強和高效的資源利用,廣泛用于開發、測試和生產環境中。
Android in Docker 介紹
宿主機系統中通過 docker 運行 Android 容器。利用 docker 的特性,我們可以將宿主機的設備節點映射到 Android 容器中,使容器和宿主機共用一套 kernel,從而實現Android 容器通過直通的方式調用 RK 平臺相關的硬件加速單元:GPU、VPU、NPU、RGA 等。

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

Android 容器部署
1、若宿主機已連接互聯網,可通過 SCP 命令將 container 文件夾高效地傳輸至 Linux 宿主機的 /userdata/ 目錄中
scp -r ./AIC/container root@xxx.xx.xx.xx:/userdata/
2、進入容器文件夾
cd /userdata/container
3、初次啟動時,執行初始化腳本
./aic.sh-i
4、等待初始化完成后,執行
./aic.sh -r <安卓鏡像.tgz> <容器數量>
演示:
注意:網絡默認是采用端口映射方式。
<宿主ip>:1100 --> <容器0>:5555<宿主ip>:1101 --> <容器1>:5555......
宿主機固件和 Android 容器均已上傳至以下鏈接,請點擊此處下載。提取碼:1234
注:如需對宿主機或 Android 容器進行更深入的定制,可以聯系業務團隊獲取完整的源代碼。
調試及使用
容器管理
1、查看所有容器(包括已停止的容器)
docker ps -a
2、刪除 Android 容器
docker rm -f
3、停止正在運行的容器
docker stop
4、啟動一個已停止的容器
docker start
容器調試
1、進入一個正在運行的容器
docker exec -it sh
2、看容器的 CPU 和內存使用情況
docker stats
3、查看所有容器(包括已停止的容器)
docker cp 本地文件 容器ID:容器內路徑
4、局域網其他設備移動文件至 docker 容器
adb connect 宿主機IP:端口號adb -s 172.16.11.92:1102 push 本地文件 容器ID:容器內路徑
注:Firefly默認 docker 網絡部署為 docker0 網橋方式,即端口映射方案,如自行修改使用 macvlan 網絡則 connect 命令需使用容器 IP 加端口號 5555
adb connect 容器IP:5555
5、網絡畫面傳輸
使用開源的 scrcpy:
https://github.com/Genymobile/scrcpy
scrcpy -s 容器IP : 端口號
性能測試
設備:ITX-3588J(16+128)
固件:ITX-3588J_Ubuntu20.04-Minimal-r3104_v1.3.0c_241107.img
ITX-3588J 上同時運行 6個 Android 系統
1、讓宿主機運行在性能模式
# 出現一個 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、游戲測試演示:
在實際測試中,我們發現 RK3588 處理器在最高性能狀態下,通過AIC(Android in Docker)技術能夠高效并行運行多個 Android 系統。然而,當同時運行 6個 Android 容器時,由于它們共享 CPU 資源,若這些容器對 CPU 的需求同時激增,可能會對用戶體驗造成影響。相比之下,運行 4個 Android 容器時,CPU 的壓力較為適中,各容器間的影響也相對較小。因此,根據具體的使用場景和需求,可以靈活決定開啟容器的數量。
在 AIC 技術的卓越加持下,Firefly 服務器潛能得到全面釋放,使用搭載 RK3588 處理器的 Firefly B1 服務器,在 10 節點配置下,每節點獨立運行 6 個 Android 系統,實現了 60個 Android 系統的并行操作,彰顯 AIC 技術的強大實力。升級至 72 節點的 B2 服務器,更是高達 432 個系統,顯著拓展了運行 Android 的容器數量。
-
Android
+關注
關注
12文章
3960瀏覽量
129367 -
開源
+關注
關注
3文章
3551瀏覽量
43356 -
Docker
+關注
關注
0文章
505瀏覽量
12605
發布評論請先 登錄
如何使用 Docker容器化技術
ARM平臺實現Docker容器技術
ARM平臺實現Docker容器技術
Docker是什么?
RK3399 docker無法加載IMAGE ID是為什么?
docker基礎知識和使用bmnnsdk時的docker常用命令
Docker—簡介與鏡像用法

docker 搜索鏡像,docker查看鏡像詳細信息(docker下載鏡像命令)
docker部署mysql的壞處
docker核心組件有哪些
ARM平臺實現Docker容器技術

評論