3

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

2 回答 2

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包含额外文件的包(包括 AUFS 模块,这是运行 Docker 所必需的)。如果您运行的内核不是普通的 Ubuntu 内核,那么这个假设将是错误的,该linux-image-extra-...包将不存在,并且脚本将惨遭失败。

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

    -extra-诚然,安装脚本应该对您的环境进行更多调查,并仅在有意义时尝试安装此软件包。

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

    包的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)上运行 Docker,而不是在 OpenVZ 中。

但是,如果您绝对需要在 OpenVZ 中运行 Docker,有一种方法可以做到;但它非常hackish。性能会受到影响,并且可能会产生副作用。如果您仍然想尝试,可以检查Sekexe。它将允许您在用户模式 ​​linux 内核中启动任意进程。我已成功使用它在Travis CI中运行 Docker 测试。不过,我不会推荐它用于其他任何事情。

于 2013-10-01T07:30:23.767 回答
0

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

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

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

于 2014-05-05T18:16:38.987 回答