【问题标题】:Run VirtualBox in Docker to achieve running Genymotion in Docker在Docker中运行VirtualBox实现在Docker中运行Genymotion
【发布时间】:2015-07-29 03:37:24
【问题描述】:

我正在尝试将 Genymotion 安装到 Docker 中,但我在使用 VirtualBox 时遇到了问题。这是我的 DockerFile:

FROM     ubuntu:15.04
MAINTAINER paulo.ch8

RUN apt-get update &&  \
    apt-get install -y wget && \
#                       qtwebkit && \
    echo 'deb http://download.virtualbox.org/virtualbox/debian trusty contrib' >> /etc/apt/sources.list && \
    wget http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O /tmp/oracle_vbox.asc -q && \
    apt-key add /tmp/oracle_vbox.asc && \
    apt-get update &&  \
    apt-get install -y virtualbox-4.3 && \
    apt-get clean

RUN apt-get update &&  \
    apt-get install -y bzip2

RUN apt-get install -y libgstreamer0.10-dev libgstreamer-plugins-base0.10-dev
RUN apt-get install -y linux-headers-3.19.0-22-generic
# RUN apt-get install -y lspci
RUN /etc/init.d/vboxdrv setup

# Install GenyMotion
ADD genymotion-2.5.2_x64.bin /tmp/genymotion.bin


RUN echo 'y' | /tmp/genymotion.bin -d /genymotion/

# RUN /usr/sbin/useradd --create-home --home-dir /home/nonroot --shell /bin/bash nonroot && \
#     /usr/sbin/adduser nonroot sudo
# USER nonroot
# WORKDIR /home/nonroot

我的 Dockerfile 文件夹中有带有 chmod +x 的 genymotion.bin 安装程序,因此可以添加和执行。

我使用以下命令运行构建:

docker run -ti --rm --net=host
             -v $HOME/.Xauthority:/root/.Xauthority
            -e DISPLAY=unix$DISPLAY
            -v /tmp/.X11-unix:/tmp/.X11-unix
            --privileged
            --name=genymotion-test
             genymotion:teste16  /bin/bash

之后,我运行了我在 docker.hub jess/virtualbox 找到的命令:

docker cp virtualbox:/etc/init.d/vboxdrv .
docker cp virtualbox:/usr/src/vboxhost-4.3.28 /usr/src/ 
docker cp virtualbox:/usr/share/virtualbox /usr/share
./vboxdrv setup 

但是我遇到了以下问题:

当我尝试运行已创建的虚拟机时出现此错误:

【问题讨论】:

  • 也许你应该添加到你的运行命令-v /dev/vboxdrv:/dev/vboxdrv就像我在registry.hub.docker.com/u/esben/vboxinsidedocker看到的那样无论如何我认为你要么需要复制一个文件(就像你使用docker cp复制了一些文件一样,要么将它挂载到docker run 命令
  • 你好 Paulo,我们正在做同样的工作,很想知道你是否能够完成这项工作?
  • 你好@VenuMurthy。我没有找到任何将 VirtualBox 运行到 docker 中的方法...如果你找到了请告诉我!
  • 您好,您解决了吗?我有一个运行 ubuntu 12.04 x64 的正在运行的 docker 容器,在容器内我有我的 android studio 设置以及虚拟盒和 genymotion,它们都按预期运行。如果您遇到问题,请告诉我,我可以将我的 Dockerfile 发送给您
  • 你好@Francois,如果可能的话,我想看看你的 Dockerfile,我们也打算这样做;)

标签: docker virtualbox genymotion


【解决方案1】:

我在容器内运行 vbox 也有类似的问题,显然容器使用主机的内核,以保持 docker 容器尽可能轻。 (这里使用的是 linux 主机)

所以我的解决方案是在主机上安装 vbox/geny 并与 docker 容器共享正确的目录和端口以用于调试等目的

重要的一步是将 genymotion 端口和目录暴露给容器。

我当前的设置

主机

  • Ubuntu 15.04
  • VirtualBox 4.3.34
  • Genymotion 2.6.0
  • Android 项目文件

Docker 容器

  • Ubuntu 12.04
  • Java 8
  • Android Studio 2.0 预览版

启动新容器,第一次(无容器),Genymotion

xhost + && \
sudo docker run -it \
-e DISPLAY \
-v /dev/bus/usb:/dev/bus/usb \
-v $HOME/projects/android:/home/developer/projects \
-v $HOME/programs/genymotion:/home/developer/genymotion \
-v $HOME/.Genymobile:$HOME/.Genymobile \
--net=host \
-p 8600-8699:8600-8699 \
--name android-studio \
android-studio/marais \
/home/developer/android-studio/bin/studio.sh

Dockerfile 源

https://bitbucket.org/fmarais/docker-android-studio-marais/src

# NOTE
# Items marked with ## are comments
# items marked with # are code snippets that can be enabled

FROM ubuntu:12.04
MAINTAINER Francois Marais <fm.marais@gmail.com>




##  --------------------- Before you build
##  1. (MANDATORY) Download the android studio zip 
##  https://developer.android.com/sdk/index.html#Other
##  copy the zip to to the Dockerfile directory and rename to 
##  'android-studio.zip'

##  2. (MANDATORY) Download Java JDK tar.gz 
##  http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
##  copy the java jdk tar.gz to the Dockerfile directory and rename to 
##  'jdk.tar.gz'

##  3. (OPTIONAL, ENABLE IF YOU WANT TO USE EXISTING SDK DIR) 
##  copy your android sdk directory to the Dockerfile directory and rename to 
##  'android-studio-sdk' 
RUN mkdir -p /home/developer/android-studio-sdk
COPY android-studio-sdk /home/developer/android-studio-sdk

## 4. (OPTIONAL, FOR GENYMOTION) 
## Install virtualbox and genymotion on the host machine
## Install geymotion under $HOME/programs/genymotion on the host machine
## Use the genymotion start method





## --------------------- Build and Run
##  Check that you have your 
##  1. android-studio.zip 
##  2. jdk.tar.gz
##  3. optional android-studio-sdk folder
##  Build with the following command
#docker build -t android-studio/marais .

##  Start new container, 1st time (no container), not using Genymotion
#xhost + && \
#sudo docker run -it \
#-e DISPLAY \
#-v /dev/bus/usb:/dev/bus/usb \
#-v $HOME/projects/android:/home/developer/projects \
#--net=host \
#--name android-studio \
#android-studio/marais \
#/home/developer/android-studio/bin/studio.sh

##  Start new container, 1st time (no container), Genymotion
#xhost + && \
#sudo docker run -it \
#-e DISPLAY \
#-v /dev/bus/usb:/dev/bus/usb \
#-v $HOME/projects/android:/home/developer/projects \
#-v $HOME/programs/genymotion:/home/developer/genymotion \
#-v $HOME/.Genymobile:$HOME/.Genymobile \
#--net=host \
#-p 8600-8699:8600-8699 \
#--name android-studio \
#android-studio/marais \
#/home/developer/android-studio/bin/studio.sh

## Start existing container, 2nd time
#xhost + && sudo docker start android-studio




## --------------------- Init and tools
RUN apt-get update
RUN apt-get install -y \
nano \
unzip \
bzip2 \
git \
libxtst6 \
libxtst6:i386 \
lib32stdc++6 \
libxrender-dev \
libxi6 \
libgconf-2-4

## Git flow
RUN apt-get install -y \
git-flow




## Required for android studio gradle build process
RUN apt-get install -y \
libncurses5:i386 \
libstdc++6:i386 \
zlib1g:i386

## Bash-it for git shell
RUN git clone --depth=1 https://github.com/Bash-it/bash-it.git ~/.bash_it && \
~/.bash_it/install.sh




## --------------------- Java Installation (/usr/lib/jvm/java-oracle-jdk)
## Download you desired java JDK, http://www.oracle.com/technetwork/java/javase/downloads/jdk8-downloads-2133151.html
RUN mkdir -p /usr/lib/jvm/java-oracle-jdk
COPY jdk.tar.gz /tmp/jdk.tar.gz
RUN tar zxf /tmp/jdk.tar.gz -C /usr/lib/jvm/java-oracle-jdk --strip-components=1
RUN rm /tmp/jdk.tar.gz
ENV JAVA_HOME /usr/lib/jvm/java-oracle-jdk

## --------------------- Android studio installation (/home/developer/android-studio)
## Download android studio, https://developer.android.com/sdk/index.html#Other
## Project files from host machine in $HOME/projects/android
RUN mkdir -p /home/developer/projects

COPY android-studio.zip /tmp/android-studio.zip
RUN unzip -d /home/developer /tmp/android-studio.zip
RUN rm /tmp/android-studio.zip

## Set up USB device debugging
RUN mkdir -p /etc/udev/rules.d
COPY 51-android.rules /etc/udev/rules.d/51-android.rules
RUN chmod a+r /etc/udev/rules.d/51-android.rules

## Add env for studio
ENV PATH $PATH:/home/developer/android-studio-sdk/tools
ENV PATH $PATH:/home/developer/android-studio-sdk/platform-tools

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 2020-04-22
    • 1970-01-01
    • 2020-12-05
    • 2021-10-03
    • 2021-07-13
    • 2018-05-20
    • 2021-07-29
    相关资源
    最近更新 更多