6,534
edits
Changes
created
Since OpenVZ kernel 042stab105.4 it is possible to run Docker inside containers. This article describes how.
== Container tuning ==
* 1. Make sure veth kernel module is loaded on the host
* 2. Create Fedora 20 container:
vzctl create $veid --ostemplate fedora-20-x86_64
* 3. Turn on bridge feature to allow docker creating bridged network:
vzctl set $veid --features bridge:on --save
* 4. Setup Container veth-based network:
vzctl set $veid --netif_add eth0 --save
* 5. Allow all iptables modules being used in containers:
vzctl set $veid --netfilter full --save
* 6. Configure custom cgroups in systemd:
vzctl mount $veid
echo "JoinControllers=cpu,cpuacct,cpuset,freezer,devices" >> /vz/root/$veid/etc/systemd/system.conf
* 7. 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: <pre><nowiki>http://container_ip:8080</nowiki></pre>
== Limitations ==
* This feature is currently in beta
* Only "vfs" Docker graph driver is currently supported
== Container tuning ==
* 1. Make sure veth kernel module is loaded on the host
* 2. Create Fedora 20 container:
vzctl create $veid --ostemplate fedora-20-x86_64
* 3. Turn on bridge feature to allow docker creating bridged network:
vzctl set $veid --features bridge:on --save
* 4. Setup Container veth-based network:
vzctl set $veid --netif_add eth0 --save
* 5. Allow all iptables modules being used in containers:
vzctl set $veid --netfilter full --save
* 6. Configure custom cgroups in systemd:
vzctl mount $veid
echo "JoinControllers=cpu,cpuacct,cpuset,freezer,devices" >> /vz/root/$veid/etc/systemd/system.conf
* 7. 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: <pre><nowiki>http://container_ip:8080</nowiki></pre>
== Limitations ==
* This feature is currently in beta
* Only "vfs" Docker graph driver is currently supported