LXC contenedores no privilegiados

septiembre 5, 2017 at 12:17 Deja un comentario

Tal vez le interese: LXC contenedores privilegiados.

Ir al script con los comandos.

Los contenedores para Linux (LXC) son una manera de ejecutar procesos como si se corrieran en la misma máquina real pero de manera ligera y segura.

Podrían verse como un máquina virtual ligera y de verdad son mucho más ligeros que una máquina virtual porque no simulan el hardware subyacente.

Tienen la desventaja que deben ejecutar un kernel similar al de la máquina húesped (ej: Debian – Ubuntu).

Este post es una breve descripción del uso básico de contenedores no privilegiados (Creados por un usuario sin permisos de root) en un Debian.

  • Instalamos LXC:
    apt-get install lxc -y
  • Como vamos a usar contenedores no-privilegiados, necesitamos definir un mapeo entre usuarios y grupos del contenedor a usuarios y grupos de la máquina húesped. Esto quiere decir que el usuario con id 0 (root) en el contenedor es el usuario con id 100000 en la máquina húesped.

    Creamos el mapeo de usuarios:

    mkdir -p ~/.config/lxc
    echo 'lxc.id_map = u 0 100000 65536' > ~/.config/lxc/default.conf
  • Creamos el mapeo de grupos:
    echo 'lxc.id_map = g 0 100000 65536' >> ~/.config/lxc/default.conf
  • Habilitamos la red para el contenedor usando para ello una interfaz puente (¿Cómo agregar un puente?), en mi caso el dispositivo puente es virbr1:
    echo 'lxc.network.type = veth' >> ~/.config/lxc/default.conf
    echo 'lxc.network.link = virbr1' >> ~/.config/lxc/default.conf
  • Usando el usuario root, damos permiso a nuestro usuario de utilizar la red:
    echo "nombreUsuario veth virbr1 2" | tee -a /etc/lxc/lxc-usernet
  • Usando el usuario root, se habilita el espacio de nombres de usuario:
    echo 1 > /sys/fs/cgroup/cpuset/cgroup.clone_children
    echo 1 > /proc/sys/kernel/unprivileged_userns_clone
  • Crear el contenedor:
    lxc-create -n debian9 -t download -- -d debian -r stretch -a amd64
  • Podemos listar los contenedores existentes con:
    lxc-ls -f
  • Arrancamos el contenedor:
    lxc-start -n debian9 -d
  • Nos conectamos al contenedor:
    lxc-attach -n debian9
  • Una vez dentro del contenedor podemos crear un usuario:
    /usr/sbin/useradd -m -d /home/nombreusuario -g users -s /bin/bash -u 1666 nombreusuario
  • Podemos apagar el contenedor con:
    lxc-stop -n debian9
  • Lo podemos destruir con:
    lxc-destroy -n debian9

Notas: estando dentro del contenedor

  • Para evitar los errores:
    dpkg: warning: 'ldconfig' not found in PATH or not executable

    y

    dpkg: warning: 'start-stop-daemon' not found in PATH or not executable

    debí agregar el siguiente texto al archivo /etc/profile del contenedor:

    export PATH=$PATH:/usr/local/sbin:/usr/sbin:/sbin

    ¿Cómo agregar variables al PATH?

  • Otra manera de lograr también lo anterior es llamar a los comandos con el PATH explícitamente:
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin apt-get install vim
  • Adicionalmente también tuve que agregar la variable LC_ALL en /etc/profile:
    export LC_ALL=en_US.UTF-8
  • Para actualizar la versión del profile:
    source /etc/profile

Respaldar el contenedor

Para respaldar nuestro contenedor seguimos los siguientes pasos:

  • Apagamos el contenedor:
    lxc-stop -n debian9
  • Copiamos el contenedor a nuestra ruta de respaldo: (ej: /home/usuario/backups)
    lxc-copy --name debian9 --newname debian_9 --newpath rutaDirectorio

    Nota: si se va a hacer un respaldo comprimido en tar.gz debe usarse la opción --numeric-owner a la hora de comprimir y descomprimir el respaldo para que se mantenga el mapeo entre usuarios y grupos entre el contenedor y la máquina húesped:

    tar --numeric-owner -czvf debian_9.tar.gz ./debian_9
  • Para restaurarlo simplemente copiamos nuestro respaldo hacia la ruta /home/usuario/.local/share/lxc:
    cp -rvf debian_9/ ~/.local/share/lxc
  • Podemos confirmar que se agregó el contenedor usando lxc-ls:
    lxc-ls -f

    Lo que arroja un resultado similar a este: comando lxc-ls

Listo listo.

Entry filed under: bash scripting, Debian, linux, lxc, sistemas operativos, virtualización. Tags: , , .

LXC contenedores privilegiados Nginx + php7

Dejáte un comentario

Introduce tus datos o haz clic en un icono para iniciar sesión:

Logo de WordPress.com

Estás comentando usando tu cuenta de WordPress.com. Cerrar sesión / Cambiar )

Imagen de Twitter

Estás comentando usando tu cuenta de Twitter. Cerrar sesión / Cambiar )

Foto de Facebook

Estás comentando usando tu cuenta de Facebook. Cerrar sesión / Cambiar )

Google+ photo

Estás comentando usando tu cuenta de Google+. Cerrar sesión / Cambiar )

Conectando a %s

Trackback this post  |  Subscribe to the comments via RSS Feed


Digo yo

Que dura está la vida

Dice Jhon Lennon

La vida es lo que pasa mientras haces planes

Digo yo

Dónde haya un computín esté dónde esté algo comenzará en cero

Acerca de Mi:


Hell-Out world!!

Dice Einstein

Dios no juega a los dados

Dice Niels Bohr

Einstein no le diga a Dios lo que tiene que hacer

Dice el Che:

Seamos realistas y hagamos lo imposible.

Dice Goethe:

Lo que no comprendemos no lo poseemos.

Digo yo:

Hay que tratar de travesear todo

Dice Oscar Wilde:

Cualquier hombre puede llegar a ser feliz con una mujer, con tal de que no la ame.

Digo yo:

De fijo dijo eso porque era homosexual.

Artículos

septiembre 2017
L M X J V S D
« Ago    
 123
45678910
11121314151617
18192021222324
252627282930  

A %d blogueros les gusta esto: