我正在为Runner创建我自己的Dockerfile,它将作为Android项目运行程序在Gitlab CI中工作。问题是,我即将把物理设备连接到一台机器上,我将在这台机器上部署那个跑步者。和Linux机器一样,我试图将51-android.rules添加到/etc/dev/rules.d中,如本教程中所述:Udev Setup在执行docker build .
命令时,我得到错误:
/bin/sh: 1: udevadm: not found
我的问题是:
- 1) 有可能将物理安卓设备连接到运行操作系统的docker吗
- 2) 如果1)是,我的错误在哪里
有问题的码头文件部分:
FROM ubuntu:latest
#Ubuntu setup
RUN apt-get update
RUN apt-get install -y wget
...
#Setup Android Udev Rules
RUN wget https://raw.githubusercontent.com/M0Rf30/android-udev-rules/master/51-android.rules
RUN mv -y `pwd`/51-android.rules /etc/udev/rules.d
RUN chmod a+r /etc/udev/rules.d/51-android.rules
RUN udevadm control --reload-rules
RUN service udev restart
RUN usermod -a -G plugdev `whoami`
RUN adb kill-server
RUN adb devices
#Cleaning
RUN apt-get clean
Docker的理念是每个容器运行一个进程。通常没有Init系统,所以你不能像以前那样使用服务。
我不知道是否有可能实现您想要做的事情,但我认为您希望在主机上使用udev规则,并在启动设备时添加设备:https://docs.docker.com/engine/reference/commandline/run/#add-主机设备到容器设备
此外,您可能还想阅读https://docs.docker.com/engine/userguide/eng-image/dockerfile_best-practices/#/apt-得到每个RUN
都会创建一个新层,只是将信息添加到容器中。
话虽如此,您可能希望将adb devices
作为容器的ENTRYPOINT
或CMD
。