Difference between revisions of "LXC"

From CRIU
Jump to navigation Jump to search
Line 53: Line 53:
 
The installation process is described [[Installation | here]].
 
The installation process is described [[Installation | here]].
 
==Example==
 
==Example==
We have an application test for testing dump/restor of a Linux Container. You can find it in [http://git.criu.org/?p=crtools.git;a=tree;f=test/app-emu/lxc;hb=HEAD a git repository].
+
We have [http://git.criu.org/?p=crtools.git;a=tree;f=test/app-emu/lxc;hb=HEAD an application test] to test dump/restore of a Linux Container.
 +
 
 +
This test contains two files: [http://git.criu.org/?p=crtools.git;a=blob;f=test/app-emu/lxc/run.sh;hb=HEAD run.sh] and [http://git.criu.org/?p=crtools.git;a=blob;f=test/app-emu/lxc/network-script.sh;hb=HEAD network-script.sh].
 +
 
 +
The script run.sh is a main script, which executes ''crtools'' two times for dumping and restoring CT. This scripts contains actual options for ''crtools''.
 +
 
 +
The script network-script.sh is used to lock and unlock CT's network. During dump a state of CT should not be changed, so [[CR tools]] freezes processes and executes an external script to freeze network. On restore [[CR tools]] restores states of processes and resumes the CT, which includes resume of processes and network). An external script is used to unlock CT's network.

Revision as of 10:46, 18 September 2012

Prepare a Linux Container (CT)

Requirements

  • A console should be disabled (lxc.console = none)
  • udev should not run in CT ($ mv /sbin/udevd{,.bcp})

Prepare a host environment

  • Mount cgroupfs
$ mount -t cgroup c /cgroup
  • Create a network bridge
# cat /etc/sysconfig/network-scripts/ifcfg-br0 
DEVICE=br0
TYPE=Bridge
BOOTPROTO=dhcp
ONBOOT=yes
DELAY=5
NM_CONTROLLED=n
$ cat /etc/sysconfig/network-scripts/ifcfg-eth0
DEVICE="eth0"
NM_CONTROLLED="no"
ONBOOT="yes"
BRIDGE=br0

Create CT

  • Download an OpenVZ template and extract it.
curl http://download.openvz.org/template/precreated/centos-6-x86_64.tar.gz | tar -xz -C test-lxc
  • Create a config files
$ cat ~/test-lxc.conf 
lxc.console=none
lxc.utsname = test-lxc
lxc.network.type = veth
lxc.network.flags = up
lxc.network.link = br0
lxc.network.name = eth0
lxc.mount = /root/test-lxc/etc/fstab
lxc.rootfs = /root/test-lxc-root/
$ cat /root/test-lxc/etc/fstab
none /root/test-lxc-root/dev/pts devpts defaults 0 0
none /root/test-lxc-root/proc    proc   defaults 0 0
none /root/test-lxc-root/sys     sysfs  defaults 0 0
none /root/test-lxc-root/dev/shm tmpfs  defaults 0 0
  • Register CT
$ lxc-create -n test-lxc -f test-lxc.conf
  • Start CT
$ mount --bind test-lxc test-lxc-root/
$ lxc-start -n test-lxc

Dump/Restore a Linux Container

Installation

The installation process is described here.

Example

We have an application test to test dump/restore of a Linux Container.

This test contains two files: run.sh and network-script.sh.

The script run.sh is a main script, which executes crtools two times for dumping and restoring CT. This scripts contains actual options for crtools.

The script network-script.sh is used to lock and unlock CT's network. During dump a state of CT should not be changed, so CR tools freezes processes and executes an external script to freeze network. On restore CR tools restores states of processes and resumes the CT, which includes resume of processes and network). An external script is used to unlock CT's network.