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

最佳答案

这里有两个不同的问题。

  • 缺少linux-image-extra-$(uname -r)软件包。

    这是因为Docker安装脚本大胆地假设您正在运行内核,例如3.8.0-30,它是从软件包linux-image-3.8.0-30安装的,应该有一个包含额外文件的linux-image-extra-3.8.0-30软件包(包括AUFS模块,这是运行Docker所必需的)。如果您正在运行的不是Ubuntu内核的内核,则此假设将为假,linux-image-extra-...包将不存在,脚本将惨遭失败。

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

    诚然,安装脚本应该对您的环境进行更多调查,并仅在有意义时尝试安装此-extra-软件包。
  • 无法在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.8)上而不是在OpenVZ内运行Docker。

    但是,如果您绝对需要在OpenVZ中运行Docker,则有一种方法可以做到;但这是非常朴实的。这会影响性能,并且可能会有副作用。如果仍然要尝试,可以检查Sekexe。它可以让您在用户模式Linux内核中启动任意进程。我已成功使用它在Travis CI中运行Docker测试。不过,我不会推荐其他任何东西。

    08-28 17:06