Docker ist eine Open-Source-Containerisierungplattform zum Verpacken, Verteilen und Ausführen von Anwendungen. Indem es die Anwendung und alle ihre Abhängigkeiten in unabhängige Container verpackt, stellt es sicher, dass Anwendungen in verschiedenen Umgebungen konsistent laufen. Docker bietet schnelle Bereitstellung, starke Isolation und effiziente Ressourcennutzung und wird weit verbreitet in Entwicklungs-, Test- und Produktionsumgebungen eingesetzt.
Android in Docker
Der Android-Container wird über Docker im Hostsystem ausgeführt. Unter Nutzung der Eigenschaften von Docker können wir die Gerätenodes des Hosts auf den Android-Container abbilden. Da der Container und der Host einen gemeinsamen Kernel nutzen, kann der Android-Container direkt die Hardwarebeschleunigungseinheiten der Rockchip-Plattform aufrufen: GPU, VPU, NPU, RGA usw.
Android in Docker - Bereitstellung
Host-Bereitstellung
Firefly bietet das Host-Firmware für mehrere Modelle an. Benutzer müssen lediglich die passende Firmware-Version gemäß dem verwendeten Modell auswählen und es upgraden, um die Host-Bereitstellung einfach abzuschließen.
Android-Container-Bereitstellung
(1) Wenn der Host-Rechner mit dem Internet verbunden ist, kann der Container-Ordner effizient über den SCP-Befehl in das /userdata/-Verzeichnis des Linux-Host-Rechners übertragen werden.
scp -r ./AIC/container root@xxx.xx.xx.xx:/userdata/
(2) Gehen Sie in den Container-Ordner.
cd /userdata/container
(3) Führen Sie beim ersten Start das Initialisierungsskript aus.
./aic.sh -i
(4) Warten Sie, bis die Initialisierung abgeschlossen ist, und führen Sie dann aus.
./aic.sh -r <Android Image.tgz><Anzahl der Container>
Demo:
Hinweis: Das Netzwerk verwendet standardmäßig die Portzuordnung.
<Host-IP>:1100 --> <Container 0>:5555
<Host-IP>:1100 --> <Container 1>:5555
....
Wenn Sie tiefere Anpassungen am Host oder am Android-Container vornehmen möchten, können Sie sich an uns wenden, um den vollständigen Quellcode zu erhalten.
Debugging und Nutzung
Containerverwaltung
(1) Zeigen Sie alle Container an (einschließlich der angehaltenen Container).
docker ps -a
(2) Entfernen Sie den Android-Container.
docker rm -f <Container-ID oder -Name>
(3) Stoppen Sie den laufenden Container.
docker stop <Container-ID oder -Name>
(4) Starten Sie einen angehaltenen Container.
docker start <Container-ID oder -Name>
Container-Debugging
(1) Greifen Sie auf einen laufenden Container zu.
docker exec -it <Container-ID oder -Name> sh
(2) Zeigen Sie die CPU- und Speicherauslastung des Containers an.
docker stats
(3) Zeigen Sie alle Container an (einschließlich der angehaltenen Container).
docker cp lokale Datei Container-ID: Pfad im Container
(4) Verschieben Sie Dateien von anderen Geräten im lokalen Netzwerk in den Docker-Container.
adb connect Host-IP: Portnummer
adb -s 172.16.11.92:1102 push lokale Datei Container-ID: Pfad im Container
Hinweis: Fireflys Standard-Docker-Netzwerkkonfiguration ist das Docker0-Brückenmodus, d. h. das Portzuordnungsschema. Wenn Sie es ändern, um ein Macvlan-Netzwerk zu verwenden, muss der Connect-Befehl die Container-IP plus Portnummer 5555 verwenden
adb connect Container-IP:5555
(5) Netzwerk-Bildschirmübertragung.
Verwenden Sie das Open-Source-Tool scrcpy: https://github.com/Genymobile/scrcpy
scrcpy -s Container-IP: Portnummer
Leistungstest
- Gerät: ITX - 3588J
- Firmware: ITX - 3588J_Ubuntu20.04 - Minimal - r3104_v1.3.0c_241107.img
- Sechs Android-Systeme laufen gleichzeitig auf ITX - 3588J
(1) Führen Sie den Host im Leistungsmodus aus.
# Es ist normal, wenn ein "Ungültiges Argument" angezeigt wird. Ignorieren Sie es einfach.
root@firefly:~# echo performance | tee $(find /sys/devices -name governor)
performance
tee: /sys/devices/system/cpu/cpuidle/current_governor: Ungültiges Argument
(2) Halten Sie Ihre CPU gut gekühlt und die Temperatur unter 80 Grad Celsius.
root@firefly:~# cat /sys/class/thermal//temp
54538
56384
56384
55461
52692
51769
52692
root@firefly:~# cat /sys/bus/cpu/devices/cpu*/cpufreq/cpuinfo_cur_freq
1800000
1800000
1800000
1800000
2256000
2256000
2256000
2256000
(3) Spieltest-Demonstration
In den praktischen Tests haben wir festgestellt, dass der RK3588-Prozessor mithilfe der AIC-Technologie (Android in Docker) mehrere Android-Systeme parallel im höchsten Leistungsstatus effizient ausführen kann. Wenn jedoch sechs Android-Container gleichzeitig laufen, teilen sie sich die CPU-Ressourcen. Wenn die CPU-Anforderungen dieser Container gleichzeitig stark ansteigen, kann dies die Benutzererfahrung beeinträchtigen. Im Vergleich dazu ist die Belastung der CPU bei der Ausführung von vier Android-Containern relativ moderat, und die gegenseitige Beeinflussung zwischen den Containern ist relativ gering. Daher kann die Anzahl der zu öffnenden Container flexibel gemäß den spezifischen Anwendungsfällen und Bedürfnissen festgelegt werden.
Dank der hervorragenden Unterstützung der AIC-Technologie wurde das Potenzial der Firefly-Server vollends ausgeschöpft. Bei der Verwendung des mit dem RK3588-Prozessor ausgestatteten Firefly B1-Servers in einer 10-Knoten-Konfiguration, auf dem jeder Knoten unabhängig sechs Android-Systeme ausführt, werden 60 Android-Systeme parallel betrieben. Dies demonstriert die starke Stärke der AIC-Technologie. Der auf 72 Knoten upgradierte B2-Server verfügt über bis zu 432 Systeme, was die Anzahl der Android-Container erheblich erweitert.