Установка Docker на OpenVZ VPS
У меня есть OpenVZ VPS, операционная система CentOS 6, я пытаюсь установить Докер, но ошибка запуска Докера.
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 ]
2 ответов
Обновлено декабря 2016. Я попытался не дублировать ответ @ Alien Life Form, но добавить больше деталей.
короткий ответ::
в большинстве случаев OpenVZ хостинг будет использовать 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 для работы: группы управления и пространства имен. Поэтому вам нужно ядро с этими функциями.
С OpenVZ вы не контролируете свое ядро, только хостинговая компания. Большинство хостинговых компаний не будут сотрудничать и обновлять ядро, поэтому, если ядро окажется несовместимым, вы обычно не удача.
OpenVZ 7 основан на 3.10
ядра, которые поддерживают Docker из коробки, однако я еще не видел хостинг OpenVZ 7-KVM, похоже, является самой популярной виртуализацией с новыми поставщиками низкой стоимости, выходящими на рынок.
OpenVZ 6 более распространен в старых провайдерах и основан на 2.6
ядро вообще несовместимо с Docker. Однако ядра OpenVZ не являются нормальными 2.6
ядра, но имеют несколько функций, возвращаемых из 3.x
ядра. Так что ... факт ядра 042stab105.4
и позже поддерживают функции, необходимые докеру в соответствии с официальной вики OpenVZ (см. @ Alien Life Form answer).
приведенный ниже текст относится только к OpenVZ версии 6.
если uname -a
показывает ядра 042stab105.4
или позже-вы можете использовать Docker с некоторыми настройками для установки необходимых специальных файловых систем.
если он старше и компания готова сотрудничать, они не могут установить ядро основной линии, поскольку оно несовместимо с OpenVZ. Они должны установить специальное ядро с патчами OpenVZ изhttps://openvz.org/Download/kernel . Предпочтительно последняя стабильная версия (которая 042stab120.11
на момент написания), но по крайней мере 042stab105.4
. Для сравнения, все хосты OpenVZ, которые я видел, имеют что-то вроде 2.6.32-042stab075.2
, что не только несовместимо с Docker, но и уязвимо. Таким образом, вы можете попробовать использовать аргумент уязвимости, чтобы принудить поддержку к обновлению :)
еще один очевидный, но не всегда применимым решением является переход от OpenVZ к хостингу с другой технологией виртуализации, такой как Xen или KVM. Однако может быть так, что ядро mainline CentOS 6 не имеет необходимых функций, поэтому CentOS 6 может быть совместим только с Docker при запуске с исправленными ядрами без запаса. Таким образом, вы можете рассмотреть вопрос о переходе на CentOS 7 тоже.
старый поток-однако решение можно найти, обработав CentOS6 как если бы это был Debian wheezy в этой ссылке:https://openvz.org/Docker_inside_CT
в основном, в /etc / init.D / docker do:
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
}