The importance of knowing the theory to minimum is obviously cost saving application. It Sounds Odd But You Actually Can Run Docker Inside OpenVZ. This is an Example Virtualization inside Virtualization – Nested Virtualization. It demands the administrator rather webhost to enable it. Exactly these points we talked in the articles – Docker and Virtualization, container virtualization, OpenVZ vs Xen Virtualization, types of virtualization etc. Whether you can run Docker inside OpenVZ VPS that depends on the webhost. System administrator may have disabled Nested Virtualization judging the hardware. It is meaningless to shout over support tickets to allow Docker – server may fail.
Run Docker Inside OpenVZ : What We Do For Enabling Nested Virtualization as Administrator
Nested virtualization is the ability of running a virtual machine within another virtual machine to an arbitrary depth. In other words, nested virtualization refers to running one or more hypervisors inside another hypervisor. This nested guest virtual machine need not be homogenous with its host virtual machine. That means application virtualization can be deployed within a virtual machine created by using hardware virtualization. In Infrastructure as a Service (IaaS) it is known factor – IaaS platform needs to support nested virtualization. The way nested virtualization can be implemented on a particular server depends on supported hardware-assisted virtualization capabilities. Since Haswell microarchitecture Intel started to include VMCS shadowing as a technology that accelerates the nested virtualization.Advertisement
Take that, I am the System Administrator (read – your OpenVZ VPS webhosting provider). In that case, I can run
vzctl command as I am over and above the OpenVZ containers. I will run these commands to enable the capability to run Docker inside OpenVZ container :
vzctl set $veid --features bridge:on --save # allow docker creating bridged network
vzctl set $veid --netif_add eth0 --save # setup container veth-based network
vzctl set $veid --netfilter full --save # allow iptables modules
vzctl mount $veid # enable tun device access
echo "JoinControllers=cpu,cpuacct,cpuset freezer,devices" >> /vz/root/$veid/etc/systemd/system.conf
vzctl start $veid # start the services
How I Will Understand that My OpenVZ Host Supports Docker Installation?
Directly ask via support ticket. If it is not enabled or enabled, in documentation of FAQ, the webhost usually will mention it. You can not “hack” to enable it unless sysadmin enabled it.
How to Run Docker Inside OpenVZ
Provided that your webhost supports it and you have enabled TUN from webhost control panel, if you want install and use Docker on Ubuntu 16.04, you will run these :
sudo apt-key adv --keyserver hkp://p80.pool.sks-keyservers.net:80 --recv-keys 58118E89F3A912897C070ADBF76221572C52609D
echo "deb https://apt.dockerproject.org/repo ubuntu-xenial main" | sudo tee /etc/apt/sources.list.d/docker.list
apt-cache policy docker-engine
You will get an output at this point. After that, you’ll run :
apt install -y docker-engine
sudo systemctl status docker
sudo usermod -aG docker $(whoami)
docker to check the response. In case you are CentOS user, you will run :
yum -y update
yum install epel-release
yum install docker-io
docker -d –bridge="venet0"
Do not run these stuffs for production servers. It is a dangerous work for the database server to run in that way.