在OpenVZ VPS上安装Docker

我有一个OpenVZ VPS,操作系统是CentOS 6,我尝试安装Docker,但是Docker启动错误。

Starting cgconfig service: Error: cannot mount cpuset to /cgroup/cpuset: Invalid argument /sbin/cgconfigparser; error loading /etc/cgconfig.conf: Cgroup mounting failed Failed to parse /etc/cgconfig.conf or /etc/cgconfig.d [FAILED] Starting docker: [ OK ] 

更新于2016年12月。我尽量不要复制@外星生命forms的答案,但添加更多的细节。

简短的回答

在大多数情况下,OpenVZ托pipe将使用OpenVZ 6,这个版本与Docker不兼容。

Docker只支持OpenVZ 7(基于3.x内核,请参阅https://openvz.org/Docker_inside_CT_vz7 )或OpenVZ 6(内核版本为042stab105.4或更高版本)(请参阅https://openvz.org/Docker_inside_CT ) 。

很长的回答

Docker需要Linux内核的两个特性才能操作:控制组和命名空间。 所以你需要一个具有这些function的内核。

使用OpenVZ你不能控制你的内核,只有托pipe公司。 大多数托pipe公司不会协作和更新内核,所以如果内核变得不兼容,通常就不会运气。

OpenVZ 7基于支持Docker的3.10内核,但是我还没有看到OpenVZ 7托pipe – KVM似乎是新型低成本供应商进入市场时最stream行的虚拟化技术。

OpenVZ 6在较老的提供商中比较常见,基于一般与Docker不兼容的2.6内核。 然而,OpenVZ内核不是正常的2.6内核,但是从3.x内核返回的function很less。 所以实际上,内核042stab105.4和更高版本支持Docker官方OpenVZ wiki所需的function(请参阅@Alien Life Form答案)。

下面的文本仅适用于OpenVZ版本6。

如果uname -a显示内核042stab105.4或更高版本 – 您可以使用Docker进行一些调整以安装所需的特殊文件系统。

如果它比较老,并且公司愿意合作,则不能安装主线内核,因为它与OpenVZ不兼容。 他们必须从https://openvz.org/Download/kernel安装一个带OpenVZ补丁的特殊内核。 最好是最新的稳定版本(在写作时是042stab120.11 ),但至less是042stab105.4 。 相比之下,我所见过的所有OpenVZ主机都有类似于2.6.32-042stab075.2东西,它不仅与Docker不兼容,而且很脆弱。 所以你可以尝试使用漏洞参数来强制升级支持:)

另一个显而易见的但并非总是适用的解决scheme是从OpenVZ转移到另一种虚拟化技术(如Xen或KVM)的托pipe。 然而,主线CentOS 6内核可能并没有必要的function,所以CentOS 6只能在使用非库存补丁内核运行时与Docker兼容。 所以你可以考虑转移到CentOS 7。

旧的线程 – 但是,解决scheme可以通过在这个链接处理CentOS6,如果它是一个debian wheezy: https ://openvz.org/Docker_inside_CT

基本上在/etc/init.d/docker中做:

 prestart() { # ALF service cgconfig status > /dev/null # ALF # ALF if [[ $? != 0 ]]; then # ALF service cgconfig start # ALF fi mount -t tmpfs tmpfs /sys/fs/cgroup mkdir /sys/fs/cgroup/freezer,devices mount -t cgroup cgroup /sys/fs/cgroup/freezer,devices -o freezer,devices mkdir /sys/fs/cgroup/cpu,cpuacct,cpuset mount -t cgroup cgroup /sys/fs/cgroup/cpu,cpuacct,cpuset/ -o cpu,cpuacct,cpuset }