installation - LXC-Docker 依赖失败

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

最佳答案

这里有两个不同的问题。

  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 原生内核,则此假设将是错误的,linux-image-extra-... 软件包将不存在,并且脚本将严重失败。

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

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

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

    lxc 包的 postinstall 脚本尝试启动 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 测试。不过,我不会推荐它用于其他任何用途。

关于installation - LXC-Docker 依赖失败,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19108294/

相关文章:

python - 查看来自 PID != 1 的日志

docker - 我的Docker容器应用可以访问主机的麦克风和扬声器吗? (Mac,Windows,Linux)

installation - 安装 Go 语言

phpunit require_once() 错误

vue.js - 如何修复 'Cannot find module vue-cli-service.js'?

reactjs - 创建React App Build和Docker-Compose不传递环境变量

nginx - 503 Service Temporarily Unavailable with gitlab docker 和 nginx-proxy docker

installation - 在 rhc 设置中输入 Openshift 登录后,是什么导致终端进入输出 "? You must enter a valid HighLine::String"的循环?

mysql - 安装 mysql 作为 gem

docker - 在CLI中使用多个Docker Compose配置文件时,是否需要在所有命令运行中进行指定?