Ubuntu Docker 容器中的 Virtualbox 缺少内核标头

var*_*ump 5 virtualbox ubuntu vagrant docker

我正在尝试在 Docker 中运行 virtualbox 以使用 vagrant。我尝试使用 Ubuntu 来实现这一目标。这是我的 Dockerfile:

FROM ubuntu

RUN apt-get update
RUN apt-get install -y software-properties-common python-software-properties
RUN add-apt-repository 'deb http://download.virtualbox.org/virtualbox/debian trusty contrib'
RUN add-apt-repository 'deb http://de.archive.ubuntu.com/ubuntu trusty main restricted universe multiverse'
RUN apt-get update
RUN apt-get install -y wget linux-headers-generic
RUN wget http://download.virtualbox.org/virtualbox/debian/oracle_vbox.asc -O- | sudo apt-key add -

RUN apt-get update
RUN apt-get install -y gcc virtualbox dkms virtualbox-dkms
RUN wget https://dl.bintray.com/mitchellh/vagrant/vagrant_1.7.1_x86_64.deb
RUN dpkg -i vagrant_1.7.1_x86_64.deb
Run Code Online (Sandbox Code Playgroud)

如果我然后运行virtualbox,我会得到:

WARNING: The character device /dev/vboxdrv does not exist.
         Please install the virtualbox-dkms package and the appropriate
         headers, most likely linux-headers-.

         You will not be able to start VMs until this problem is fixed.
Failed to open the X11 display!
Run Code Online (Sandbox Code Playgroud)

如您所见,我已经尝试使用apt-get install linux-headers-generic. 但尝试使用 uname 安装: apt-get install linux-headers-uname -r 不起作用:

Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-headers-3.16.7-tinycore64
E: Couldn't find any package by regex 'linux-headers-3.16.7-tinycore64'
Run Code Online (Sandbox Code Playgroud)

我在任何地方都找不到 linux-headers-3.16.7-tinycore64 。谷歌搜索等,没有找到它,甚至在 linux tinycore 网站上也是如此。

感谢您的帮助!

Pet*_*r M 2

您需要在主机系统上安装内核模块,而不是在 docker 映像中。

sudo apt-get install linux-headers-generic virtualbox-dkms
Run Code Online (Sandbox Code Playgroud)

然后测试内核模块是否加载:

sudo /etc/init.d/virtualbox status
VirtualBox kernel modules are loaded.
Run Code Online (Sandbox Code Playgroud)

然后你应该能够通过安装 /dev/vboxdrv 来运行 docker 容器:

docker run -it -v /dev/vboxdrv:/dev/vboxdrv image-name
Run Code Online (Sandbox Code Playgroud)

有关示例,请参阅Docker Hub 上的VirtualBox Inside Docker 。