Difference between revisions of "LXC"
Qian11.zhang (talk | contribs) (LXC 1.1.0 supprorts the lxc-checkpoint tool through CRIU) |
(added link to demo) |
||
Line 56: | Line 56: | ||
* <pre>Error (mount.c:517): Mount 58 (master_id: 12 shared_id: 0) has unreachable sharing</pre> | * <pre>Error (mount.c:517): Mount 58 (master_id: 12 shared_id: 0) has unreachable sharing</pre> | ||
criu doesn't yet support shared mountpoints as lxc does; make sure your rootfs is on a non-shared mount. | criu doesn't yet support shared mountpoints as lxc does; make sure your rootfs is on a non-shared mount. | ||
+ | |||
+ | == See also == | ||
+ | |||
+ | * [https://www.youtube.com/watch?v=a9T2gcnQg2k&feature=youtu.be&t=18m8s The New New Thing: Turning Docker Tech into a Full Speed Hypervisor] - Talk of Tycho Andersen with demo of migration LXC container with Doom inside. [https://github.com/tych0/presentations/blob/master/ods2014.md Demo script] | ||
[[Category: HOWTO]] | [[Category: HOWTO]] |
Revision as of 23:51, 28 May 2015
Requirements
You should have built and installed a recent (>= 1.3.1) version of CRIU.
Checkpointing and restoring a container
LXC upstream has begun to integrate checkpoint/restore support through the lxc-checkpoint tool. This functionality has been in the recent released version of LXC---LXC 1.1.0 , you can install the LXC 1.1.0 or you can check out the development version on Ubuntu by doing:
sudo add-apt-repository ppa:ubuntu-lxc/daily sudo apt-get update sudo apt-get install lxc
Next, create a container:
sudo lxc-create -t ubuntu -n u1 -- -r trusty -a amd64
And add the following lines (as above) to its config:
cat | sudo tee -a /var/lib/lxc/u1/config << EOF # hax for criu lxc.console = none lxc.tty = 0 lxc.cgroup.devices.deny = c 5:1 rwm EOF
Finally, start, and checkpoint the container:
sudo lxc-start -n u1 sleep 5s # let the container get to a more interesting state sudo lxc-checkpoint -s -D /tmp/checkpoint -n u1
At this point, the container's state is stored in /tmp/checkpoint, and the filesystem is in /var/lib/lxc/u1/rootfs. You can restore the container by doing:
sudo lxc-checkpoint -r -D /tmp/checkpoint -n u1
And then, get your container's IP and ssh in:
ssh ubuntu@$(sudo lxc-info -i -H -n u1)
Troubleshooting
Error (mount.c:805): fusectl isn't empty: 8388625.
Dumping of fuse filesystems is currently not supported. Empty the container's /sys/fs/fuse/connections and try again.
Error (mount.c:517): Mount 58 (master_id: 12 shared_id: 0) has unreachable sharing
criu doesn't yet support shared mountpoints as lxc does; make sure your rootfs is on a non-shared mount.
See also
- The New New Thing: Turning Docker Tech into a Full Speed Hypervisor - Talk of Tycho Andersen with demo of migration LXC container with Doom inside. Demo script