March 5, 2015

Docker - the pain of finding the right distribution+kernel+hardware combination

Since two months I have been very busy with finding a working combination of Linux kernel, hardware and Linux distribution that would actually stable for running Docker in production. Only one out of eight combination worked for me.

Feel the pain and frustration?

All tests done with Docker 1.5.0 final without special configuration of the underlaying driver (AUFS vs. device mapper).

Linux Distribution Kernel Hardware Hoster Comment Status
Ubuntu 14.04 3.13 Bare metal Hosteurope the only working combination (using AUFS) WORKING
Ubuntu 14.04 3.13 VM Hosteurope hoster-patched kernel in order to fit its OpenVZ virtualization FAIL
OpenSuse 13.1 2.6 Bare metal self-hosted kernel panics after some minutes during a Docker build  FAIL
OpenSuse 13.1 3.11 Bare metal self-hosted kernel panics once or twice a day during Docker builds (possibly related to BTRFS crashes) FAIL
CentOS 6.6 2.6 VM Hetzner slow IO, long Docker builds (10 times slower than on the same VM), likely related
to CentOS and/or the Docker device mapper (although supported by Docker)
FAIL
CentOS 7.0 >3.10 VM Hetzner slow IO, long Docker builds (10 times slower than on the same VM), likely related
to CentOS and/or the Docker device mapper (although supported by Docker). Also: Docker did not play well with the 'firewalld' of CentOS. Reconfiguration of the firewalld caused a network loss of all Docker containers and the docker daemon had to be restart....a major fail.
FAIL
Ubuntu 14.04 3.13 VM Contabo Docker builds much slower than directly on the same VM, not as extreme as with CentOS, Docker container execution speed OK partly WORKING
CentOS 7.0 3.13 VM Contabo same problems as with other CentOS versions FAIL

Conclusions:

  • CentOS is completely unusable for running Docker - at least with the default device-mapper
  • OpenSuse 13.1 problems likely related to BTRFS issues (in combination with the device-mapper)
  • running Docker on virtual machines in general does not seem to make much sense
  • Ubuntu 14.04 on real hardware seems to be the only reasonable combination right now
  • Docker does not perform any reasonable runtime checks for checking the sanity of the Linux host (crashes and unrelated or non-speaking error messages are the only thing you get from Docker)
  • The general attitude of the Docker devs: we-don't-care and works-for-us -> case closed
  • The monolithic design of Docker is broken. Restarting Docker - for whatever reason - implies a shutdown of all containers (using --restart you can restart all containers upon restart of the Docker daemon)
  • The Docker documentation lies about working and supported distro and kernel support (see link above) and the Dockers obviously do not care about instead of fixing their documentation and in particular: testing Docker on different hardware and distros - apparently their testing producedures are broken from ground up.

However there is hope...the upcoming CoreOS Rocket runtime engine looks very promising...however Rocket is still in early stages. At least Rocket already supports loading Docker images. On the other side: Rocket tried to place a pull request for Docker in order to achieve image compatibility between Docker and Rocket ...but typically for the ignorance and arrogance of the Docker devs: they give a shit and only care about their own thing. Unfortunately the Docker developers are corrupted by too much venture captial and became ignorant through the Docker hype.