在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-
软件包。 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测试。不过,我不会推荐其他任何东西。