在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 }