LXC-Docker失败了依赖性

use*_*447 3 install docker

在Ubuntu 13.06 x64上安装,它是一个OpenVZ虚拟机.

按照脚本写信,并收到一些错误...

root@dev:/# sudo apt-get install linux-image-extra-`uname -r`
Reading package lists... Done
Building dependency tree
Reading state information... Done
E: Unable to locate package linux-image-extra-2.6.32-042stab081.3
E: Couldn't find any package by regex 'linux-image-extra-2.6.32-042stab081.3'
root@dev:/#
Run Code Online (Sandbox Code Playgroud)

虽然我能够:

root@dev:/# uname -r
2.6.32-042stab081.3
root@dev:/#
Run Code Online (Sandbox Code Playgroud)

然后,当我尝试安装时,我收到以下内容(这是第二次尝试,因此显然被剥离)

root@dev:/# sudo apt-get install lxc-docker
Reading package lists... Done
Building dependency tree
Reading state information... Done
lxc-docker is already the newest version.
0 upgraded, 0 newly installed, 0 to remove and 0 not upgraded.
4 not fully installed or removed.
After this operation, 0 B of additional disk space will be used.
Do you want to continue [Y/n]? y
Setting up lxc (0.9.0-0ubuntu3.4) ...
start: Job failed to start
invoke-rc.d: initscript lxc-net, action "start" failed.
dpkg: error processing lxc (--configure):
 subprocess installed post-installation script returned error exit status 1
dpkg: dependency problems prevent configuration of lxc-templates:
 lxc-templates depends on lxc (>= 0.8.0~rc1-4ubuntu43); however:
  Package lxc is not configured yet.

dpkg: error processing lxc-templates (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of lxc-docker-0.6.3:
 lxc-docker-0.6.3 depends on lxc; however:
  Package lxc is not configured yet.

dpkg: error processing lxc-docker-0.6.3 (--configure):
 dependency problems - leaving unconfigured
dpkg: dependency problems prevent configuration of lxc-docker:
lxc-docker depends on lxc-docker-0.6.3; however:
  Package lxc-docker-0.6.3 is not configured yet.

dpkg: error processing lxc-docker (--configure):
 dependency problems - leaving unconfigured
Errors were encountered while processing:
 lxc
 lxc-templates
 lxc-docker-0.6.3
 lxc-docker
E: Sub-process /usr/bin/dpkg returned an error code (1)
root@dev:/#
Run Code Online (Sandbox Code Playgroud)

jpe*_*zzo 9

这里有两个不同的问题.

  1. 缺少linux-image-extra-$(uname -r)包裹.

    这是因为Docker安装脚本做出了大胆的假设:如果你正在运行内核,例如3.8.0-30,它是从包中安装的linux-image-3.8.0-30,那么应该有一个linux-image-extra-3.8.0-30包含额外文件的包(包括运行Docker所必需的AUFS模块).如果你运行的是一个不是Ubuntu内核的内核,那么这个假设将是假的,linux-image-extra-...包将不存在,并且脚本将失败.

    但是,如果您知道内核中有AUFS支持(或者内核的AUFS模块以某种方式安装),则可以安全地跳过此步骤.

    不可否认,安装脚本应该对您的环境进行更多调查,并尝试在-extra-有意义的情况下安装此软件包.

  2. 无法lxc在OpenVZ容器中安装包.

    包的postinstall脚本lxc尝试启动lxc-net服务,尝试设置lxcbr0网桥.我这里没有OpenVZ环境来测试这个,但我认为你无法在OpenVZ环境中创建一个桥.因此,服务无法启动,并且postinstall脚本报告失败,并且lxc无法将包记录为"已安装",并且lxc-docker如果未正确安装其依赖项,则Docker包()不希望安装.

    您可以通过阻止服务启动来解决此问题; 例如通过这样做:

    echo exit 101 | sudo tee /usr/sbin/policy-rc.d
    sudo chmod +x /usr/sbin/policy-rc.d
    
    Run Code Online (Sandbox Code Playgroud)

    但是,我几乎可以肯定你将无法在OpenVZ中运行Docker,因为你将无法在OpenVZ中运行容器.同样,我没有OpenVZ环境可供测试; 但如果有效,我会非常惊讶.

我强烈建议在更新的内核(例如3.8)上运行Docker,而不是在OpenVZ内部.

但是,如果您绝对需要在OpenVZ中运行Docker,那么有一种方法可以实现; 但它非常hackish.会有性能损失,可能会有副作用.如果你想尝试,你可以检查Sekexe.它将允许您在用户模式-linux内核中启动任意进程.我已成功使用它在Travis CI中运行Docker测试.不过,我不会推荐它.