LXC-Docker falla en dependencies

Instalando en Ubuntu 13.06 x64, es una máquina virtual OpenVZ.

Seguí el guión al pie de la letra y recibí un par de errores …

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:/# 

aunque soy capaz de:

 root@dev:/# uname -r 2.6.32-042stab081.3 root@dev:/# 

Luego, cuando bash instalar, recibo lo siguiente (este es un segundo bash, por lo que, evidentemente, se quitó)

 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 configunetworking yet. dpkg: error processing lxc-templates (--configure): dependency problems - leaving unconfigunetworking dpkg: dependency problems prevent configuration of lxc-docker-0.6.3: lxc-docker-0.6.3 depends on lxc; however: Package lxc is not configunetworking yet. dpkg: error processing lxc-docker-0.6.3 (--configure): dependency problems - leaving unconfigunetworking 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 configunetworking yet. dpkg: error processing lxc-docker (--configure): dependency problems - leaving unconfigunetworking Errors were encountenetworking 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:/# 

Aquí hay dos problemas distintos.

  1. Falta el package linux-image-extra-$(uname -r) .

    Esto se debe a que la secuencia de commands de installation de Docker supone en negrita que si está ejecutando kernel, por ejemplo, 3.8.0-30 , se instaló desde el package linux-image-3.8.0-30 , y debe haber un package linux-image-extra-3.8.0-30 contiene files adicionales (incluido el module AUFS, que es necesario para ejecutar Docker). Si está ejecutando un kernel que no es un kernel de Ubuntu, esta suposition será falsa, el package linux-image-extra-... no existirá, y el script fallará miserablemente.

    Sin embargo, si sabe que tiene soporte AUFS en su kernel (o que el module AUFS para su kernel está instalado de una forma u otra), puede omitir este paso de forma segura.

    Es cierto que el script de installation debe investigar un poco más sobre su entorno e intentar instalar este -extra- package solo cuando tenga sentido.

  2. No se puede instalar el package lxc dentro de un contenedor OpenVZ.

    El script postinstall del package lxc intenta iniciar el service lxc-net , que intenta configurar el puente lxcbr0 . No tengo un entorno OpenVZ aquí para probar esto, pero creo que no se puede crear un puente dentro de un entorno OpenVZ. Por lo tanto, el service no se inicia y la secuencia postinstall commands postinstall informa una falla, y el package lxc no se puede registrar como "instalado" y el package Docker ( lxc-docker ) no desea instalarse si sus dependencies no están instaladas correctamente. .

    Puede evitar esto impidiendo que se inicie el service; por ejemplo, haciendo:

     echo exit 101 | sudo tee /usr/sbin/policy-rc.d sudo chmod +x /usr/sbin/policy-rc.d 

    Sin embargo, estoy casi seguro de que no podrá ejecutar Docker dentro de OpenVZ, porque no podrá ejecutar contenedores dentro de OpenVZ. De nuevo, no tengo un entorno OpenVZ para probar; pero me sorprendería mucho si eso funcionara.

Recomiendo ejecutar Docker en un kernel más reciente (por ejemplo, 3.8) y no dentro de OpenVZ.

Sin embargo, si necesita ejecutar Docker en OpenVZ, hay una forma de hacerlo; pero es muy hackish. Habrá un golpe de performance, y puede haber efectos secundarios. Si quieres probar de todos modos, puedes consultar Sekexe . Le permitirá iniciar processs arbitrarios dentro de un kernel user-mode-linux. Lo he usado con éxito para ejecutar testings de Docker dentro de Travis CI . No lo recomendaría para nada más, sin embargo.

Estaba jugando un poco con Sekexe, pero estoy totalmente de acuerdo con jpetazzo; es genial, pero no para producción. En cambio, comencé a usar debootstrap + cárceles chroot para tener una experiencia Docker-ish similar (pero no tan buena como Docker por supuesto).

Es posible que desee comprobar esto: http://coderofsalvation.github.io/debootstrap-container

Estoy usando esto ahora en un OpenVZ VPS para separar packages / proyectos en contenedores orderados. Descargo de responsabilidad: soy el autor.