Editing Docker inside CT

Jump to: navigation, search

Warning: You are not logged in. Your IP address will be publicly visible if you make any edits. If you log in or create an account, your edits will be attributed to your username, along with other benefits.

The edit can be undone. Please check the comparison below to verify that this is what you want to do, and then save the changes below to finish undoing the edit.
Latest revision Your text
Line 1: Line 1:
Since OpenVZ kernel [[Download/kernel/rhel6-testing/042stab105.4|042stab105.4]] it is possible to run Docker inside containers. This article describes how.
+
Since OpenVZ kernel 042stab105.4 it is possible to run Docker inside containers. This article describes how.
<br>'''This page is applicable for OpenVZ 6''' (for Virtuozzo 7 see [[Docker inside CT vz7| '''here''']]).
 
  
 
== Prerequisites ==
 
== Prerequisites ==
 
 
* Kernel 042stab105.4 or later version
 
* Kernel 042stab105.4 or later version
* Kernel modules '''tun''', '''veth''' and '''bridge''' loaded on host (not required since vzctl 4.9 as it loads it automatically)
+
* Kernel module veth module is loaded on host
  
== Container creation and tuning ==
+
== Container tuning ==
  
* Create CentOS 7 container with enough disk space:
+
* Create Fedora 20 container:
  vzctl create $veid --ostemplate centos-7-x86_64 --diskspace 20G
+
  vzctl create $veid --ostemplate fedora-20-x86_64
 
* Turn on bridge feature to allow docker creating bridged network:
 
* Turn on bridge feature to allow docker creating bridged network:
 
  vzctl set $veid --features bridge:on --save
 
  vzctl set $veid --features bridge:on --save
Line 17: Line 15:
 
* Allow all iptables modules to be used in containers:
 
* Allow all iptables modules to be used in containers:
 
  vzctl set $veid --netfilter full --save
 
  vzctl set $veid --netfilter full --save
* Enable tun device access for container:
 
vzctl set $veid --devnodes net/tun:rw --save
 
 
* Configure custom cgroups in systemd:
 
* Configure custom cgroups in systemd:
 
: <small>''systemd reads /proc/cgroups and mounts all cgroups enabled there, though it doesn't know there's a restriction that only freezer,devices and cpuacct,cpu,cpuset can be mounted in container, but not freezer, cpu etc. separately''</small>
 
: <small>''systemd reads /proc/cgroups and mounts all cgroups enabled there, though it doesn't know there's a restriction that only freezer,devices and cpuacct,cpu,cpuset can be mounted in container, but not freezer, cpu etc. separately''</small>
 
  vzctl mount $veid
 
  vzctl mount $veid
  echo "JoinControllers=cpu,cpuacct,cpuset freezer,devices" >> /vz/root/$veid/etc/systemd/system.conf
+
  echo "JoinControllers=cpu,cpuacct,cpuset freezer,devices" >> /vz/root/$veid/etc/systemd/system.conf  
 
* Start the container:
 
* Start the container:
 
  vzctl start $veid
 
  vzctl start $veid
* If you use Debian Wheezy for your CT which does not support systemd, you can run:
 
mount -t tmpfs tmpfs /sys/fs/cgroup
 
mkdir /sys/fs/cgroup/freezer,devices
 
mount -t cgroup cgroup /sys/fs/cgroup/freezer,devices -o freezer,devices
 
mkdir /sys/fs/cgroup/cpu,cpuacct,cpuset
 
mount -t cgroup cgroup /sys/fs/cgroup/cpu,cpuacct,cpuset/ -o cpu,cpuacct,cpuset
 
  
 
== Prepare Docker in container ==  
 
== Prepare Docker in container ==  
Line 39: Line 29:
 
  yum -y install docker-io
 
  yum -y install docker-io
 
* Start docker daemon
 
* Start docker daemon
  dockerd -s vfs
+
  docker -d -s vfs
or change line in /etc/sysconfig/docker to:
 
OPTIONS='--selinux-enabled -s vfs'
 
and
 
service docker start
 
  
 
== Example usage ==
 
== Example usage ==
  
 
=== Wordpress ===
 
=== Wordpress ===
 
 
Use Docker to start Wordpress (official, standard way).
 
Use Docker to start Wordpress (official, standard way).
  
Line 59: Line 44:
 
== Limitations ==
 
== Limitations ==
  
 +
* This feature is currently in beta
 
* Only "vfs" Docker graph driver is currently supported
 
* Only "vfs" Docker graph driver is currently supported
* [[Checkpointing and live migration]] of a container with Docker containers inside is not supported
 
* Bridges cannot be created inside Docker containers running inside OpenVZ container
 
* Only works with docker versions 1.10 or older. Newer versions will return an error: "Your Linux kernel version 2.6.32-042stab123.2 is not supported for running docker. Please upgrade your kernel to 3.10.0 or newer." (i.e. switch to [[Quick_installation|Virtuozzo 7]] or later)
 
 
== See also ==
 
* [http://www.youtube.com/watch?v=rh4oPpLtdYc Docker inside CT demo video].
 
 
[[Category:HOWTO]]
 
[[Category: TRD]]
 

Please note that all contributions to OpenVZ Virtuozzo Containers Wiki may be edited, altered, or removed by other contributors. If you don't want your writing to be edited mercilessly, then don't submit it here.
If you are going to add external links to an article, read the External links policy first!

To edit this page, please answer the question that appears below (more info):

Cancel Editing help (opens in new window)