2015-12-26 14 views
6

Ho un OpenVZ VPS, il sistema operativo è CentOS 6, provo ad installare Docker, ma l'errore di avvio Docker.Installa Docker su OpenVZ VPS

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 ] 
+0

Sembra che il modulo 'cgroups' non sia caricato. Forse non installato ?! Tuttavia 'docker' può ancora funzionare senza supporto per cgroups. prova ad installare e abilitare 'cgroups ':' sudo yum install libcgroup' e 'sudo service cgconfig start'. ora dovresti essere in grado di accedere ai percorsi 'cgroups':' sudo ls -l/cgroup'. Riavvia il servizio finestra mobile e verifica se funziona. – Boynux

risposta

17

Aggiornato a dicembre 2016. Ho provato a non duplicare la risposta @Alien Life Form ma aggiungo ulteriori dettagli.

Risposta breve:

Nella maggior parte dei casi di hosting OpenVZ utilizzerà OpenVZ 6 con un kernel obsoleto che è incompatibile con la finestra mobile.

Docker è supportato solo con OpenVZ 7 (basato sul kernel 3.x, vedere https://openvz.org/Docker_inside_CT_vz7) oppure con OpenVZ 6 con la versione del kernel 042stab105.4 o più recente (vedi https://openvz.org/Docker_inside_CT).

Risposta lunga:

Docker richiede due caratteristiche del kernel di Linux per poter funzionare: gruppi di controllo e spazi dei nomi. Quindi hai bisogno di un kernel con queste funzionalità.

Con OpenVZ non si controlla il kernel, solo la società di hosting lo fa. La maggior parte delle società di hosting non collaborano e aggiornano il kernel, quindi se il kernel diventa incompatibile, si è generalmente sfortunati.

OpenVZ 7 è basato sui kernel 3.10 che supportano Docker out of the box, tuttavia non ho ancora visto un hosting OpenVZ 7: KVM sembra essere la virtualizzazione più popolare con nuovi fornitori a basso costo che entrano nel mercato.

OpenVZ 6 è più comune nei provider precedenti e si basa su un kernel 2.6 generalmente non compatibile con Docker. Tuttavia, i kernel OpenVZ non sono normali kernel 2.6 ma hanno alcune funzionalità supportate dai kernel 3.x. Di conseguenza, il kernel 042stab105.4 e versioni successive supportano le funzionalità che Docker necessita in base al wiki ufficiale di OpenVZ (vedere la risposta del modulo Life @Alien).

Il testo si applica di seguito solo per la versione OpenVZ 6.

Se uname -a mostra kernel 042stab105.4 o poi - è possibile utilizzare Docker con alcune modifiche per il montaggio dei filesystem particolari.

Se è più vecchio e la società è disposta a collaborare, non è possibile installare un kernel mainline, poiché è incompatibile con OpenVZ. Devono installare un kernel speciale con patch OpenVZ da https://openvz.org/Download/kernel. Preferibilmente l'ultima versione stabile (che è 042stab120.11 al momento della scrittura) ma almeno 042stab105.4. In confronto, tutti gli host OpenVZ che ho visto hanno qualcosa come 2.6.32-042stab075.2, che non è solo incompatibile con Docker, ma anche vulnerabile. Quindi puoi provare a utilizzare l'argomento di vulnerabilità per forzare il supporto all'aggiornamento :)

Un'altra soluzione ovvia ma non sempre applicabile è quella di passare da OpenVZ a un hosting con un'altra tecnologia di virtualizzazione come Xen o KVM. Tuttavia, potrebbe essere il caso che il kernel di CentOS 6 non abbia le funzionalità necessarie, quindi CentOS 6 potrebbe essere compatibile con Docker solo se eseguito con kernel con patch non disponibili. Quindi puoi prendere in considerazione anche il passaggio a CentOS 7.

+0

Apparentemente la finestra mobile 1.10 era l'ultima versione che funzionava con questo kernel 2.6.32. Le versioni successive della finestra mobile presentano un errore del tipo: La versione del kernel Linux 2.6.32-042stab123.2 non è supportata per la finestra mobile in esecuzione. Si prega di aggiornare il kernel alla versione 3.10.0 o successiva. –

+0

Grazie per una risposta dettagliata! Mi ha aiutato molto. – Dmitriy

1

Old filo - tuttavia, la soluzione può essere trovata trattando CentOS6 come se si trattasse di un debian ansimante in questo link: https://openvz.org/Docker_inside_CT

In sostanza, in /etc/init.d/docker fare:

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 

}