User Tools

Site Tools


informatica:linux:virtualizacion:lxc

Differences

This shows you the differences between two versions of the page.

Link to this comparison view

Both sides previous revisionPrevious revision
Next revision
Previous revision
informatica:linux:virtualizacion:lxc [2014/01/10 07:43] javiinformatica:linux:virtualizacion:lxc [2015/08/06 23:09] (current) jose
Line 1: Line 1:
 **LXC** **LXC**
  
-http://linuxcontainers.org/+http://linuxcontainers.org/\\ 
 +https://launchpad.net/ubuntu/+source/lxc
  
   * Es un sistema de virtualizacion a nivel de Sistema Operativo, tambien conocido como virtualizacion por contenedores   * Es un sistema de virtualizacion a nivel de Sistema Operativo, tambien conocido como virtualizacion por contenedores
Line 8: Line 9:
   * En este manual vamos a usar las herramientas de usuario de libvirt, porque estan mejor documentadas que las nativas de LXC   * En este manual vamos a usar las herramientas de usuario de libvirt, porque estan mejor documentadas que las nativas de LXC
  
 +======= Requisitos =======
 +
 +  * Una maquina con una CPU que soporte virtualizacion. Lo podemos mirar en la BIOS o lanzando este comando:
 +
 +  sudo egrep '(vmx|svm)' --color=always /proc/cpuinfo
 +
 +SI soporta virtualizacion si vemos la siguiente salida:
 +
 +<code>
 +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority
 +flags : fpu vme de pse tsc msr pae mce cx8 apic sep mtrr pge mca cmov pat pse36 clflush dts acpi mmx fxsr sse sse2 ss ht tm pbe syscall nx lm constant_tsc arch_perfmon pebs bts rep_good aperfmperf pni dtes64 monitor ds_cpl vmx smx est tm2 ssse3 cx16 xtpr pdcm lahf_lm tpr_shadow vnmi flexpriority
 +</code>
 +
 +  * Una distribucion con un kernel Linux reciente. En este caso yo uso el siguiente:
 +
 +  3.12-1-amd64
 +
 +  * Habilitar una serie de modulos en el user space del kernel
 +
 +  grep -i _ns /boot/config-$(uname -r)
 +
 +<code>
 +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
 +</code>
 ======= Instalacion ======= ======= Instalacion =======
  
-Como se ha dicho basta con instalar un nucleo reciente de cualquier distribucion GNU/LinuxEn este ejemplo:+https://wiki.debian.org/LXC 
 + 
 +====== 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  /sys/fs/cgroup  cgroup  defaults  0   0 
 +   
 +3.2. Montar: 
 + 
 +  sudo mount /sys/fs/cgroup 
 +   
 +4. Para comprobar que todos los requisitos estan satisfechos: 
 + 
 +  sudo lxc-checkconfig 
 +   
 +Salida esperada: 
 + 
 +<code> 
 +--- 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: enabled 
 + 
 +Note : Before booting a new kernel, you can check its configuration 
 +usage : CONFIG=/path/to/config /usr/bin/lxc-checkconfig 
 +</code> 
 + 
 +====== Cgroups ====== 
 + 
 +http://libvirt.org/cgroups.html 
 + 
 +1. (Opcional) Instalo systemd y elimino la entrada en /etc/fstab 
 + 
 +====== Creación de máquinas ======
  
-3.12-1-amd64+Como root 
 +  lxc-create -t <template> -n <nombre_servert> 
 +Por ejemplo: 
 +  lxc-create -t debian -n mldonkey 
 +Cuando la crea te da la password de root.
  
-En cuanto a las herramientas de usuarios hay dos opciones:+La podemos arrancar: 
 +  root@alcala:~# lxc-start -n mldonkey -d 
 +Mirar como está 
 +  root@alcala:~# lxc-info -n mldonkey 
 +  Name:           mldonkey 
 +  State:          RUNNING 
 +  PID:            15393 
 +  CPU use:        0.07 seconds 
 +  BlkIO use:      0 bytes 
 +Todas los contenedores 
 +  root@alcala:~# lxc-ls -f 
 +  NAME      STATE    IPV4  IPV6  AUTOSTART   
 +  ---------------------------------------- 
 +  mldonkey  RUNNING  -         NO          
 +Podemos entrar en ella 
 +  root@alcala:~# lxc-attach -n mldonkey 
 +  root@mldonkey:~# 
  
 +Vemos que tiene el mismo kernel que el host  
 +  root@alcala:~# uname -a
 +  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:~# uname -a
 +  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:
 +<code>
 +auto br0
 +iface br0 inet dhcp
 +        bridge_ports eth0
 +        bridge_fd 0
 +        bridge_maxwait 0
 +</code>
  
 +En el fichero de configuración por defecto ponemos que cada máquina tenga una interficie con el bridge:
 +  /etc/lxc/default.conf
 +  
 +  lxc.network.type = veth
 +  lxc.network.flags = up
 +  lxc.network.link = br0
 +  
 +Cuando creemos una máquina le pondrá esa configuración, por ejemplo:
 +  /var/lib/lxc/mldonkey/config
 +  
informatica/linux/virtualizacion/lxc.1389339833.txt.gz · Last modified: 2015/04/13 20:19 (external edit)