lxc.rst
author Oleksandr Gavenko <gavenkoa@gmail.com>
Wed, 19 Dec 2018 14:07:30 +0200
changeset 2307 08aa10b9c7ff
parent 2023 72b82c178018
child 2316 7de68fce3e7d
permissions -rw-r--r--
Add timestamp to Vagrant log.

.. -*- coding: utf-8; -*-

=====
 LXC
=====
.. contents::
   :local:

Install LXC under Debian
========================
::

  $ sudo apt-get install lxc

To make network bridge install supplement packages::

  $ sudo apt-get install bridge-utils dnsmasq

To bootstrap Debian dostro into container install::

  $ sudo apt-get install debootstrap

To bring up network bridge edir ``/etc/default/lxc-net``::

  USE_LXC_BRIDGE="true"

  LXC_ADDR="192.168.99.1"
  LXC_NETMASK="255.255.255.0"
  LXC_NETWORK="192.168.99.1/24"
  LXC_DHCP_RANGE="192.168.99.100,192.168.99.200"
  LXC_DHCP_MAX="20"

and start service::

  $ sudo service lxc-net start

Check installation with::

  $ sudo lxc-checkconfig

Create new container in LXC
===========================

``-t`` defines distro name, ``-n`` gives name for container for further
referencing, ``--`` allow pass options to template script, ``-r`` specifies
Debian release::

  $ sudo lxc-create -t debian -n debtest -- -r sid

In order to use another miror::

  $ MIRROR=http://httpredir.debian.org/debian sudo lxc-create -t debian -n debtest -- -r sid

Getting help for template specific options::

  $ /usr/share/lxc/templates/lxc-ubuntu -h
  $ /usr/share/lxc/templates/lxc-debian -h
  $ /usr/share/lxc/templates/lxc-alpine -h
  ...

Put ``veth`` network configuration into container config ``/var/lib/lxc/$NAME/config``::

  lxc.network.type = veth
  lxc.network.flags = up
  lxc.network.link = lxcbr0
  lxc.network.veth.pair = veth-stretch
  lxc.network.name = veth-stretch
  lxc.network.ipv4 = 192.168.99.12/24
  lxc.network.ipv4.gateway = 192.168.99.1

Fix DNS resolution in container::

  $ echo nameserver 8.8.8.8 | sudo tee /var/lib/lxc/$NAME/rootfs/etc/resolv.conf

LXC Container management
========================

List available VMs::

  $ sudo lxc-ls

Start VM::

  $ sudo lxc-start -n $NAME

Safely stop VM (with honer of init system)::

  $ sudo lxc-halt -n $NAME

Urgently stop VM::

  $ sudo lxc-stop -n $NAME

Mark container to start on boot in ``/var/lib/lxc/$NAME/config``::

  lxc.start.auto = 1

Link containers in non standard location to take them in account::

  $ ln -s /opt/lxc/$NAME /var/lib/lxc/$NAME

Run command in rinning container::

  $ sudo lxc-attach -n $NAME-get update

Making snapshot
===============

See ``lxc-snapshot(1)``.

List of snapshots::

  $ sudo lxc-snapshot --list
  $ sudo lxc-snapshot -n $NAME --list

Make a snapshot::

  $ sudo lcx-halt -n $NAME
  $ sudo lcx-snapshot -n $NAME

Restore from snapshot::

  $ sudo lcx-halt -n $NAME
  $ sudo lcx-snapshot -n $NAME -r $SNAPNAME