Difference between revisions of "Docker inside CT"

From OpenVZ Virtuozzo Containers Wiki
Jump to: navigation, search
(created)
 
(add prereq)
Line 1: Line 1:
 
Since OpenVZ kernel 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.
 +
 +
== Prerequisites ==
 +
* Kernel 042stab105.4 or later version
 +
* Kernel module veth module is loaded on host
  
 
== Container tuning ==
 
== Container tuning ==
  
* 1. Make sure veth kernel module is loaded on the host
+
* 1. Create Fedora 20 container:
* 2. Create Fedora 20 container:
 
 
  vzctl create $veid --ostemplate fedora-20-x86_64
 
  vzctl create $veid --ostemplate fedora-20-x86_64
* 3. Turn on bridge feature to allow docker creating bridged network:
+
* 2. Turn on bridge feature to allow docker creating bridged network:
 
  vzctl set $veid --features bridge:on --save
 
  vzctl set $veid --features bridge:on --save
* 4. Setup Container veth-based network:
+
* 3. Setup Container veth-based network:
 
  vzctl set $veid --netif_add eth0 --save
 
  vzctl set $veid --netif_add eth0 --save
* 5. Allow all iptables modules being used in containers:
+
* 4. Allow all iptables modules being used in containers:
 
  vzctl set $veid --netfilter full --save
 
  vzctl set $veid --netfilter full --save
* 6. Configure custom cgroups in systemd:
+
* 5. Configure custom cgroups in systemd:
 
  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  
* 7. Start the container:
+
* 6. Start the container:
 
  vzctl start $veid
 
  vzctl start $veid
  

Revision as of 22:40, 11 February 2015

Since OpenVZ kernel 042stab105.4 it is possible to run Docker inside containers. This article describes how.

Prerequisites

  • Kernel 042stab105.4 or later version
  • Kernel module veth module is loaded on host

Container tuning

  • 1. Create Fedora 20 container:
vzctl create $veid --ostemplate fedora-20-x86_64
  • 2. Turn on bridge feature to allow docker creating bridged network:
vzctl set $veid --features bridge:on --save
  • 3. Setup Container veth-based network:
vzctl set $veid --netif_add eth0 --save
  • 4. Allow all iptables modules being used in containers:
vzctl set $veid --netfilter full --save
  • 5. Configure custom cgroups in systemd:
vzctl mount $veid
echo "JoinControllers=cpu,cpuacct,cpuset,freezer,devices" >> /vz/root/$veid/etc/systemd/system.conf 
  • 6. Start the container:
vzctl start $veid

Prepare Docker in container

These steps are to be performed inside the container.

  • 1. Install Docker:
yum -y install docker-io
  • 2. Start docker daemon
 docker -d -s vfs

Example usage

Wordpress

Use Docker to start Wordpress (official, standard way).

  • 1. Start mysql docker:
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql
  • 2. Start wordpress:
docker run --name test-wordpress --link test-mysql:mysql -p 8080:80 -d wordpress
  • 3. Access wordpress server by container IP and port 8080:
    http://container_ip:8080

Limitations

  • This feature is currently in beta
  • Only "vfs" Docker graph driver is currently supported