2014-08-07 18:57
Docker
Über die Popularität von Docker und einen Performancevergleich zwischen Docker und KVM.
Docker ist ein Tool, mit dem man mittels einer einfachen, textbasierten Konfiguration einen Linux-Applikationscontainer bauen kann. Docker basiert dabei auf der Container-Technik LXC, die seit einigen Jahren Bestandteil des offiziellen Linux-Kernels und mittlerweile in allen wichtigen Linux-Distributionen aktiviert ist. Über den Docker Hub lassen sich Basis-Container beziehen und schichtweise mit individuellen Anpassungen versehen, die effizient über ein Overlay-Filesystem gespeichert werden.
Die Technik hinter Docker ist eigentlich nicht neu. Container gibt es schon lange, das Projekt Linux-VServer ist bereits 15 Jahre alt. Eine Container-taugliche Installation der wichtigsten Linux-Distributionen kann man mittels debootstrap in wenigen Minuten herstellen, und zur Anwendungsintegration genügen ein paar Shell-Befehle, wget-Downloads oder Git-Checkouts.
Dieser Artikel macht deutlich, warum Docker dennoch zu Recht sehr erfolgreich ist. Es ermöglicht eine einfache und einheitliche Definition eines Applikationscontainers und unterstützt nicht nur den produktiven Betrieb, sondern den gesamten Lebenszyklus einer Anwendung und ihrer Entwicklung.
Wer jetzt denkt, dass es das alles in Form fertiger VM-Images von TurnKey Linux oder VirtualBoxImages bereits gibt, dem sei diese Studie von IBM empfohlen. Sie vergleicht KVM und Docker-Container in verschiedenen Performancemessungen miteinander.
Die Studie stellt fest, dass Docker und KVM bei Rechenleistung und Memory Durchsatz nahezu äquivalent zur Bare Metal Performance sind. Bei Messungen der Latenzzeit ist aber KVM deutlich weniger performant als Docker oder Bare Metal. Insbesondere bei Praxistests mit einer MySQL Datenbank fällt KVM deshalb zurück. Docker liegt in fast allen Tests sehr nahe bei der Bare Metal Performance. Lediglich eine Netzwerkanbindung mittels NAT und die Verwendung des Overlay-Filesystems AUFS haben hier negative Effekte; beides kann aber abgeschaltet werden, wenn extreme Performance wichtig ist.
Es wurden explizit Docker und KVM getestet, weil diese in der Praxis eine große Rolle spielen. Die Studie stellt zutreffend fest, dass Docker häufig bei PaaS Cloud Diensten genutzt wird, während KVM in IaaS Clouds führend ist. Docker basiert auf LXC, während KVM technologisch Ähnlichkeiten zu Xen (HVM) und VirtualBox aufweist. In Grenzen können die Ergebnisse durchaus dahingehend verallgemeinert werden. Wer es ganz genau wissen will, kann die für die Tests genutzten Skripte herunterladen und in seiner Umgebung testen.