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:/#
这里有两个截然不同的问题。
-
缺less
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-
软件包。 -
无法在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上使用它来分离整洁容器中的软件包/项目。 免责声明:我是作者。