0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
电子发烧友
开通电子发烧友VIP会员 尊享10大特权
海量资料免费下载
精品直播免费看
优质内容免费畅学
课程9折专享价
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

【技術(shù)案例】Android in Docker

Firefly開源團(tuán)隊(duì) ? 2025-04-02 16:33 ? 次閱讀
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

Docker 介紹

Docker 是一個(gè)開源的容器化平臺(tái),用于打包、分發(fā)和運(yùn)行應(yīng)用程序。它通過將應(yīng)用及其所有依賴打包到獨(dú)立的容器中,確保應(yīng)用在不同環(huán)境中一致運(yùn)行。Docker 提供快速部署、隔離性強(qiáng)和高效的資源利用,廣泛用于開發(fā)、測(cè)試和生產(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 等。

33c23d6a-0f9d-11f0-9434-92fbcf53809c.png

Android in Docker 部署

宿主機(jī)部署

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

33d90946-0f9d-11f0-9434-92fbcf53809c.png

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ù)量>

演示:

33e7ec0e-0f9d-11f0-9434-92fbcf53809c.png

注意:網(wǎng)絡(luò)默認(rèn)是采用端口映射方式。

<宿主ip>:1100 --> <容器0>:5555<宿主ip>:1101 --> <容器1>:5555......

宿主機(jī)固件和 Android 容器均已上傳至以下鏈接,請(qǐng)點(diǎn)擊此處下載。提取碼:1234

注:如需對(duì)宿主機(jī)或 Android 容器進(jìn)行更深入的定制,可以聯(lián)系業(yè)務(wù)團(tuán)隊(duì)獲取完整的源代碼。

調(diào)試及使用

容器管理

1、查看所有容器(包括已停止的容器)

docker ps -a

3406af36-0f9d-11f0-9434-92fbcf53809c.png

2、刪除 Android 容器

docker rm -f

342a4586-0f9d-11f0-9434-92fbcf53809c.png

3、停止正在運(yùn)行的容器

docker stop

344558f8-0f9d-11f0-9434-92fbcf53809c.png

4、啟動(dòng)一個(gè)已停止的容器

docker start

3461eff4-0f9d-11f0-9434-92fbcf53809c.png

容器調(diào)試

1、進(jìn)入一個(gè)正在運(yùn)行的容器

docker exec -it sh

348b7144-0f9d-11f0-9434-92fbcf53809c.png

2、看容器的 CPU 和內(nèi)存使用情況

docker stats

34c231e8-0f9d-11f0-9434-92fbcf53809c.png

3、查看所有容器(包括已停止的容器)

docker cp 本地文件 容器ID:容器內(nèi)路徑

34ddedde-0f9d-11f0-9434-92fbcf53809c.png

4、局域網(wǎng)其他設(shè)備移動(dòng)文件至 docker 容器

adb connect 宿主機(jī)IP:端口號(hào)adb -s 172.16.11.92:1102 push 本地文件 容器ID:容器內(nèi)路徑

34ecd88a-0f9d-11f0-9434-92fbcf53809c.png

注: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)

35099344-0f9d-11f0-9434-92fbcf53809c.png

性能測(cè)試

設(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、游戲測(cè)試演示:


在實(shí)際測(cè)試中,我們發(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 資源,若這些容器對(duì) CPU 的需求同時(shí)激增,可能會(huì)對(duì)用戶體驗(yàn)造成影響。相比之下,運(yùn)行 4個(gè) Android 容器時(shí),CPU 的壓力較為適中,各容器間的影響也相對(duì)較小。因此,根據(jù)具體的使用場(chǎng)景和需求,可以靈活決定開啟容器的數(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ù)量。

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • Android
    +關(guān)注

    關(guān)注

    12

    文章

    3971

    瀏覽量

    129850
  • 開源
    +關(guān)注

    關(guān)注

    3

    文章

    3636

    瀏覽量

    43639
  • Docker
    +關(guān)注

    關(guān)注

    0

    文章

    513

    瀏覽量

    12825
收藏 0人收藏
加入交流群
微信小助手二維碼

掃碼添加小助手

加入工程師交流群

    評(píng)論

    相關(guān)推薦
    熱點(diǎn)推薦

    如何使用 Docker容器化技術(shù)

    對(duì)于開發(fā)人員來說,Docker肯定都不陌生,今天小編帶大家重新學(xué)習(xí)一下Docker。 什么是 Docker 官話: Docker 是一種開源的容器化平臺(tái),它可以幫助開發(fā)者將應(yīng)用程序與其
    的頭像 發(fā)表于 09-30 11:24 ?1.7w次閱讀

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    或網(wǎng)絡(luò)接口進(jìn)行通信。圖1(2)Docker的作用更高效的利用系統(tǒng)資源:Docker對(duì)系統(tǒng)資源的利用率更高,無論是應(yīng)用執(zhí)行速度,內(nèi)存損耗或者文件存儲(chǔ)速度,都要比傳統(tǒng)虛擬機(jī)技術(shù)更高效。因此,相比虛擬機(jī)
    發(fā)表于 07-17 11:05

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    或網(wǎng)絡(luò)接口進(jìn)行通信。 圖1(2)Docker的作用更高效的利用系統(tǒng)資源:Docker對(duì)系統(tǒng)資源的利用率更高,無論是應(yīng)用執(zhí)行速度,內(nèi)存損耗或者文件存儲(chǔ)速度,都要比傳統(tǒng)虛擬機(jī)技術(shù)更高效。因此,相比虛擬機(jī)
    發(fā)表于 07-25 14:36

    Docker技術(shù)有什么應(yīng)用背景

    Docker技術(shù)的一個(gè)應(yīng)用背景
    發(fā)表于 08-02 14:19

    基于docker技術(shù)的工業(yè)App架構(gòu)是如何構(gòu)成的

    基于docker技術(shù)的工業(yè)App架構(gòu)是如何構(gòu)成的?
    發(fā)表于 09-28 06:35

    Docker是什么?

    Edge技術(shù)的重要組成部分。那么Docker到底有什么本事,能在Iot領(lǐng)域如此重要呢?舉個(gè)例子,無論你是什么CPU,什么操作系統(tǒng),什么硬件條件,下面一條命令,就可以讓你的PC,嵌入式設(shè)備,跑上一...
    發(fā)表于 10-28 07:11

    RK3399 docker無法加載IMAGE ID是為什么?

    lsdocker_image.tar.bz2MD5.docker_image.tar.bz2.txtok3399_android_16.04.tar.bz2root@ubuntu:~/workspace/rk3399# docker load -i ok3399_
    發(fā)表于 12-30 07:05

    在鴻蒙上能安裝docker嗎?

    android是不支持安裝docker的,想了解下鴻蒙是否支持安裝docker
    發(fā)表于 03-21 16:32

    docker基礎(chǔ)知識(shí)和使用bmnnsdk時(shí)的docker常用命令

    本文旨在介紹docker基礎(chǔ)知識(shí)和使用bmnnsdk時(shí)的docker常用命令,幫助沒有接觸過docker的開發(fā)者快速上手。 一、docker基礎(chǔ)概念 1.1 什么是
    發(fā)表于 09-18 07:59

    Docker—簡(jiǎn)介與鏡像用法

    。 Docker為應(yīng)用打包、部署平臺(tái),而非單純的虛擬化技術(shù)docker容器的優(yōu)勢(shì): 對(duì)于開發(fā)人員:Build once、Run anywhere。 對(duì)于運(yùn)維人員:Configure once
    發(fā)表于 11-25 16:28 ?647次閱讀
    <b class='flag-5'>Docker</b>—簡(jiǎn)介與鏡像用法

    docker技術(shù)入門與實(shí)戰(zhàn)

    入門docker的首本書,系統(tǒng)化掌握容器技術(shù)
    發(fā)表于 06-09 14:38 ?0次下載

    docker 搜索鏡像,docker查看鏡像詳細(xì)信息(docker下載鏡像命令)

    Docker Hub是集中管理的Docker鏡像注冊(cè)中心。通過Docker 用戶可以在注冊(cè)中心搜索、下載和使用CLI命令行工具中的鏡像。以下是常用的Docker命令搜索鏡像:
    的頭像 發(fā)表于 07-19 09:46 ?2212次閱讀

    docker部署mysql的壞處

    Docker 是一種虛擬化技術(shù),它允許開發(fā)人員在容器內(nèi)打包應(yīng)用程序及其所有依賴項(xiàng),從而實(shí)現(xiàn)在不同環(huán)境中運(yùn)行相同的應(yīng)用程序的能力。然而,在使用 Docker 部署 MySQL 時(shí),也存在一些潛在
    的頭像 發(fā)表于 11-23 09:29 ?1740次閱讀

    docker核心組件有哪些

    Docker 是一種開源的容器化平臺(tái),它能夠?qū)崿F(xiàn)將應(yīng)用程序及其依賴項(xiàng)打包到一個(gè)可移植的容器中,從而實(shí)現(xiàn)快速、可重復(fù)、可擴(kuò)展的部署和管理。Docker 的核心組件包括 Docker Engine
    的頭像 發(fā)表于 11-23 09:47 ?2370次閱讀

    ARM平臺(tái)實(shí)現(xiàn)Docker容器技術(shù)

    什么是Docker? (1)Docker的架構(gòu) Docker是一個(gè)開源的應(yīng)用容器引擎,讓開發(fā)者可打包他們的應(yīng)用以及依賴包到一個(gè)可移植的鏡像中,然后發(fā)布到任何流行的Linux或Windows機(jī)器上
    的頭像 發(fā)表于 03-07 13:48 ?1077次閱讀
    ARM平臺(tái)實(shí)現(xiàn)<b class='flag-5'>Docker</b>容器<b class='flag-5'>技術(shù)</b>

    電子發(fā)燒友

    中國(guó)電子工程師最喜歡的網(wǎng)站

    • 2931785位工程師會(huì)員交流學(xué)習(xí)
    • 獲取您個(gè)性化的科技前沿技術(shù)信息
    • 參加活動(dòng)獲取豐厚的禮品