informatica:linux:virtualizacion:lxc
Differences
This shows you the differences between two versions of the page.
Both sides previous revisionPrevious revisionNext revision | Previous revision | ||
informatica:linux:virtualizacion:lxc [2014/01/10 11:46] – javi | informatica:linux:virtualizacion:lxc [2015/08/06 23:09] (current) – jose | ||
---|---|---|---|
Line 1: | Line 1: | ||
+ | **LXC** | ||
+ | |||
+ | http:// | ||
+ | https:// | ||
+ | |||
+ | * Es un sistema de virtualizacion a nivel de Sistema Operativo, tambien conocido como virtualizacion por contenedores | ||
+ | * Su principal ventaja es que es extremadamente mas rapida que la virtualizacion completa, pero solo se pueden correr maquinas GNU/Linux | ||
+ | * La principal ventaja de LXC es que esta implementada en el kernel de forma nativa, como KVM, por lo que puede usarse en cualquier nucleo reciente estandar | ||
+ | * En este manual vamos a usar las herramientas de usuario de libvirt, porque estan mejor documentadas que las nativas de LXC | ||
+ | |||
======= Requisitos ======= | ======= Requisitos ======= | ||
* Una maquina con una CPU que soporte virtualizacion. Lo podemos mirar en la BIOS o lanzando este comando: | * Una maquina con una CPU que soporte virtualizacion. Lo podemos mirar en la BIOS o lanzando este comando: | ||
- | sudo egrep ' | + | |
SI soporta virtualizacion si vemos la siguiente salida: | SI soporta virtualizacion si vemos la siguiente salida: | ||
Line 17: | Line 27: | ||
* Habilitar una serie de modulos en el user space del kernel | * Habilitar una serie de modulos en el user space del kernel | ||
+ | |||
+ | grep -i _ns / | ||
+ | |||
+ | < | ||
+ | CONFIG_UTS_NS=y | ||
+ | CONFIG_IPC_NS=y | ||
+ | CONFIG_USER_NS=y | ||
+ | CONFIG_PID_NS=y | ||
+ | CONFIG_NET_NS=y | ||
+ | CONFIG_NF_CONNTRACK_NETBIOS_NS=m | ||
+ | CONFIG_NSC_FIR=m | ||
+ | CONFIG_PATA_NS87415=m | ||
+ | CONFIG_PATA_NS87410=m | ||
+ | CONFIG_NS83820=m | ||
+ | CONFIG_GAMEPORT_NS558=m | ||
+ | CONFIG_TCG_NSC=m | ||
+ | CONFIG_NCPFS_NFS_NS=y | ||
+ | CONFIG_NCPFS_OS2_NS=y | ||
+ | </ | ||
+ | ======= Instalacion ======= | ||
+ | |||
+ | https:// | ||
+ | |||
+ | ====== Paquetes ====== | ||
+ | |||
+ | 1. Elegir las herramientas de usuario. Hay dos opciones: | ||
+ | |||
+ | * LXC | ||
+ | |||
+ | sudo aptitude install lxc | ||
+ | | ||
+ | * Libvirt | ||
+ | |||
+ | sudo aptitude install libvirt-bin | ||
+ | |||
+ | Yo he instalado tambien los siguientes paquetes | ||
+ | |||
+ | 2. Instalar mas paquetes (quiza son dependencias de los anteriores): | ||
+ | |||
+ | sudo aptitude install bridge-utils debootstrap | ||
+ | |||
+ | 3. (Comprobar si es estrictamente necesario) Montar cgroup | ||
+ | |||
+ | 3.1. Editar: | ||
+ | |||
+ | sudo vim /etc/fstab | ||
+ | | ||
+ | Y anyadir la siguiente linea: | ||
+ | |||
+ | cgroup | ||
+ | | ||
+ | 3.2. Montar: | ||
+ | |||
+ | sudo mount / | ||
+ | | ||
+ | 4. Para comprobar que todos los requisitos estan satisfechos: | ||
+ | |||
+ | sudo lxc-checkconfig | ||
+ | | ||
+ | Salida esperada: | ||
+ | |||
+ | < | ||
+ | --- Namespaces --- | ||
+ | Namespaces: enabled | ||
+ | Utsname namespace: enabled | ||
+ | Ipc namespace: enabled | ||
+ | Pid namespace: enabled | ||
+ | User namespace: enabled | ||
+ | Network namespace: enabled | ||
+ | Multiple /dev/pts instances: enabled | ||
+ | |||
+ | --- Control groups --- | ||
+ | Cgroup: enabled | ||
+ | Cgroup clone_children flag: enabled | ||
+ | Cgroup device: enabled | ||
+ | Cgroup sched: enabled | ||
+ | Cgroup cpu account: enabled | ||
+ | Cgroup memory controller: enabled | ||
+ | Cgroup cpuset: enabled | ||
+ | |||
+ | --- Misc --- | ||
+ | Veth pair device: enabled | ||
+ | Macvlan: enabled | ||
+ | Vlan: enabled | ||
+ | File capabilities: | ||
+ | |||
+ | Note : Before booting a new kernel, you can check its configuration | ||
+ | usage : CONFIG=/ | ||
+ | </ | ||
+ | |||
+ | ====== Cgroups ====== | ||
+ | |||
+ | http:// | ||
+ | |||
+ | 1. (Opcional) Instalo systemd y elimino la entrada en /etc/fstab | ||
+ | |||
+ | ====== Creación de máquinas ====== | ||
+ | |||
+ | Como root | ||
+ | lxc-create -t < | ||
+ | Por ejemplo: | ||
+ | lxc-create -t debian -n mldonkey | ||
+ | Cuando la crea te da la password de root. | ||
+ | |||
+ | La podemos arrancar: | ||
+ | root@alcala: | ||
+ | Mirar como está | ||
+ | root@alcala: | ||
+ | Name: | ||
+ | State: | ||
+ | PID: 15393 | ||
+ | CPU use: 0.07 seconds | ||
+ | BlkIO use: 0 bytes | ||
+ | Todas los contenedores | ||
+ | root@alcala: | ||
+ | NAME STATE IPV4 IPV6 AUTOSTART | ||
+ | ---------------------------------------- | ||
+ | mldonkey | ||
+ | Podemos entrar en ella | ||
+ | root@alcala: | ||
+ | root@mldonkey: | ||
+ | |||
+ | Vemos que tiene el mismo kernel que el host | ||
+ | root@alcala: | ||
+ | Linux alcala 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u2 (2015-07-17) x86_64 GNU/Linux | ||
+ | | ||
+ | root@mldonkey: | ||
+ | Linux mldonkey 3.16.0-4-amd64 #1 SMP Debian 3.16.7-ckt11-1+deb8u2 (2015-07-17) x86_64 GNU/Linux | ||
+ | |||
+ | ====== RED ====== | ||
+ | En el host tenemos que crear un bridge con nuestra tarjeta de red: | ||
+ | < | ||
+ | auto br0 | ||
+ | iface br0 inet dhcp | ||
+ | bridge_ports eth0 | ||
+ | bridge_fd 0 | ||
+ | bridge_maxwait 0 | ||
+ | </ | ||
+ | |||
+ | En el fichero de configuración por defecto ponemos que cada máquina tenga una interficie con el bridge: | ||
+ | / | ||
+ | | ||
+ | lxc.network.type = veth | ||
+ | lxc.network.flags = up | ||
+ | lxc.network.link = br0 | ||
+ | | ||
+ | Cuando creemos una máquina le pondrá esa configuración, | ||
+ | / | ||
+ | |
informatica/linux/virtualizacion/lxc.1389354404.txt.gz · Last modified: 2015/04/13 20:19 (external edit)