Editing Docker inside CT
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 | + | 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: | |
− | |||
− | * Create | ||
− | vzctl create $veid --ostemplate | ||
− | * Turn on bridge feature to allow docker creating bridged network: | ||
vzctl set $veid --features bridge:on --save | vzctl set $veid --features bridge:on --save | ||
− | * Setup Container veth-based network: | + | * 4. Setup Container veth-based network: |
vzctl set $veid --netif_add eth0 --save | vzctl set $veid --netif_add eth0 --save | ||
− | * Allow all iptables modules | + | * 5. 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: |
− | |||
− | |||
− | |||
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: | + | * 7. Start the container: |
vzctl start $veid | vzctl start $veid | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
== Prepare Docker in container == | == Prepare Docker in container == | ||
Line 36: | Line 22: | ||
These steps are to be performed inside the container. | These steps are to be performed inside the container. | ||
− | * Install Docker: | + | * 1. Install Docker: |
yum -y install docker-io | yum -y install docker-io | ||
− | * Start docker daemon | + | * 2. Start docker daemon |
− | + | docker -d -s vfs | |
− | |||
− | |||
− | |||
− | |||
== Example usage == | == Example usage == | ||
=== Wordpress === | === Wordpress === | ||
− | |||
Use Docker to start Wordpress (official, standard way). | Use Docker to start Wordpress (official, standard way). | ||
− | * Start mysql docker: | + | * 1. Start mysql docker: |
docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql | docker run --name test-mysql -e MYSQL_ROOT_PASSWORD=123 -d mysql | ||
− | * Start wordpress: | + | * 2. Start wordpress: |
docker run --name test-wordpress --link test-mysql:mysql -p 8080:80 -d wordpress | docker run --name test-wordpress --link test-mysql:mysql -p 8080:80 -d wordpress | ||
− | * Access wordpress server by container IP and port 8080: <pre><nowiki>http://container_ip:8080</nowiki></pre> | + | * 3. Access wordpress server by container IP and port 8080: <pre><nowiki>http://container_ip:8080</nowiki></pre> |
== Limitations == | == Limitations == | ||
+ | * This feature is currently in beta | ||
* Only "vfs" Docker graph driver is currently supported | * Only "vfs" Docker graph driver is currently supported | ||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− | |||
− |