LXC-Docker失败了依赖性

时间:2013-10-01 04:55:36

标签: 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:/#

虽然我能够:

root@dev:/# uname -r
2.6.32-042stab081.3
root@dev:/#

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

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:/#

2 个答案:

答案 0 :(得分: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内核,则此假设将为false,linux-image-extra-...包将不存在,并且脚本将失败。

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

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

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

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

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

    echo exit 101 | sudo tee /usr/sbin/policy-rc.d
    sudo chmod +x /usr/sbin/policy-rc.d
    

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

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

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

答案 1 :(得分:0)

我正在玩sekexe,但我完全同意jpetazzo;它很酷但不适合生产。相反,我开始使用debootstrap + chrooted jails来获得类似的Docker-ish体验(但当然不像docker那样酷)。

您可能需要查看此内容:http://coderofsalvation.github.io/debootstrap-container

我现在在OpenVZ VPS上使用它来分隔整洁容器中的包/项目。免责声明:我是作者。