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

尽pipe我能够:

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

这里有两个截然不同的问题。

  1. 缺lesslinux-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. 无法在OpenVZ容器中安装lxc软件包。

    lxc软件包的postinstall脚本尝试启动lxc-net服务,该服务尝试设置lxcbr0网桥。 我在这里没有OpenVZ环境来testing,但我认为你不能在OpenVZ环境中创build一个桥梁。 因此,该服务无法启动, postinstall脚本报告失败,并且lxc软件包不能被logging为“已安装”,并且如果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环境来testing; 但是如果这样做,我会感到非常惊讶。

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

但是,如果你绝对需要在OpenVZ中运行Docker,那么有办法做到这一点。 但是非常黑客。 将会有一个性能受到打击,可能会有副作用。 如果你想尝试,你可以检查Sekexe 。 它可以让你在用户模式 ​​- linux内核中启动任意进程。 我已经成功地在Travis CI中运行Dockertesting。 不过,我不会推荐它。

我用sekexe玩了一下,但我完全同意jpetazzo; 这很酷,但不是生产。 相反,我开始使用debootstrap + chrooted jail来获得类似的Docker-ish体验(但当然不像docker那么酷)。

你可能想检查一下: http : //coderofsalvation.github.io/debootstrap-container

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