Digamos que tenemos un servidor con lxc instalado, y un contenedor lxc utilizado como img base /var/lib/lxc/ubuntu_base
. Por simplicidad, olvidemos los cambios de configuración después de copiar el img base.
algunas personas sugieren usar subvolúmenes e instantáneas para hacer nuevos contenedores, pero uno podría hacer cp --reflink fácilmente con resultados similares.
Entonces, ¿cuál es la forma adecuada (o cuál es mejor) para administrar múltiples contenedores?
- instantáneas
Esta manera parece mejor, pero los comandos como lxc-destroy no funcionarán ya que no podrá eliminar el directorio.
btrfs subvolume snapshot /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- cp con reflink
No estoy seguro de si hay alguna diferencia de rendimiento entre esto o las instantáneas
cp --reflink=always /var/lib/lxc/ubuntu_base /var/lib/lxc/container_1
- o ¿Hay alguna otra manera mejor de hacer esto que no conozca?
editar:
Una cosa que he visto con la opción reflink es que no se puede eliminar el contenedor base si hay otros en ejecución, porque /proc
y /dev
están montados y nunca cambiaron, ya que la referencia es siempre la misma. Pero cerrar todos los contenedores copiados parece ayudar.
fuente
Respuestas:
Estoy en Ubuntu LTS 14 y acabo de ejecutar lo siguiente (incluso por primera vez) y funcionó de maravilla:
El uso de -s con lxc-clone tomará una instantánea si la tienda de respaldo es btrfs (en su caso).
Verifique nuevos clones / instantáneas con
¡Espero que ayude!
fuente
-s
opción, y que las tres últimas (lxc_start, lxc_stop, lxc_snapshot) son solo una proceso auxiliar para gestionar futuras evoluciones de contenedores. Es correcto ?si va a utilizar subvolúmenes btrfs para lxc, debe agregar la opción
user_subvol_rm_allowed
en su/etc/fstab
. Ejemplo extraído de un archivo fstab:UUID=XXXXXXXXXXXXXXXXXXXXXX / btrfs subvol=@,user_subvol_rm_allowed,defaults 0 0
la opción permitirá que pueda eliminar subvol sin ser root, solo usuario normal. Esta capacidad es utilizada por lxc cuando las instantáneas van en subvolúmenes btrfs
fuente
Supongo que depende de qué tan grande sea su imagen base. Probablemente crearía un nuevo contenedor y usaría Salt / Puppet, etc. para aprovisionar mis contenedores y solo lxc-clone para contenedores relativamente más grandes (por ejemplo, contenedores de desarrollo con muchas herramientas instaladas y configuradas).
Tenga en cuenta que lxc-clone usará el mismo almacén de respaldo que la fuente. Por lo tanto, para usar subvolumen necesitará crear sus contenedores con "-B btrfs". Por ejemplo:
Luego clonarlo con:
En caso de que esté usando zfs para almacenar sus contenedores, hay una
--zfsroot
opción adicional para lxc-create para que pueda elegir un zpool diferente al "tanque" predeterminado. Por ejemplo:¡Comparte y Disfruta!
fuente
-B btrfs
se usa de forma predeterminada. Supongo que mi Debian está configurado con BTRFS. En realidad, creé mi primer contenedor (un debian wheezy de 32 bits) sin esta opción, y se creó un subvolumen para él.-B best
en acción, ¡pero es bueno saberlo!