Docker on OSX

DockerLogoRunning Docker on OSX can be made possible using different methods:

Docker containers require kernel features which are only available in modern Linux kernels. In order to run Docker on OSX for example, one needs a virtual machine with a smallish Linux running in it.

Docker for Mac Beta

Docker for Mac uses xhyve, a lightweight OS X virtualization solution built on top of Hypervisor.framework. This requires you to run OS X 10.10 Yosemite and higher. The VM is provisioned with Alpine Linux running Docker engine.
The Docker API is exposed in /var/run/docker.sock where the docker and docker-compose CLI commands may directly communicate with. This is one of the benefits compared to Docker machine, especially when you do not need to manage your docker VM, or set specific environment variables before running it. Docker for Mac is further installed as native OSX application and only provides symlinks to /usr/local/bin/{docker,docker-compose}.
After the app is installed, I only had to manually add the bash-completion provided by Homebrew.

cd /usr/local/etc/bash_completion.d
ln -s /Applications/Docker.app/Contents/Resources/etc/docker.bash-completion
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-machine.bash-completion
ln -s /Applications/Docker.app/Contents/Resources/etc/docker-compose.bash-completion

I was granted a beta access key for Docker for Mac today 🙂 Even if this is still beta, it already feels much more integrated into my test and development workflow rather than using Docker machine. Awesome job! 🙂

 

Docker Machine

Docker machine will use Virtualbox as VM provider. In order to avoid manual interaction in each terminal I’m opening I’ve added an alias into my bashrc file.

vim $HOME/.bashrc
alias enable_docker=". '/Applications/Docker/Docker Quickstart Terminal.app/Contents/Resources/Scripts/start.sh'"

This script doesn’t do much except for starting the VM using the Virtualbox cli tools and then source the exported variables into your current shell environment. That way the docker client will be able to communicate with the docker daemon running inside the VM.

Parallels instead of Virtualbox

While Virtualbox works fine there are significant performance improvements when using Parallels on OSX. Furthermore it is reasonable to only use one application firing virtual machines (the Icinga Vagrant boxes also provide support for Parallels as Vagrant provider).
I was therefore looking for a native Parallels driver for Docker. Following this issue shed some light on the history of Docker drivers and their support as plugins. Parallels doesn’t seem to be officially supported by Docker themselves according to their documentation. Though there is an official driver plugin from Parallels themselves which works for Pro and Business subscriber editions only. The main reason seems to be the limited cli features in the Standard edition.

Requirements for Parallels

The main requirement is at least Docker 1.9.1 providing the Docker toolbox 0.5.1+.

Installation

I’m using Homebrew, the manual installation parts are described in the documentation. Brew tries to pull docker-machine as well – if you’re using the version from docker.com you can safely ignore the linking error.

brew install docker-machine-parallels

Create a docker machine

docker_machine_parallels_runUse the driver “parallels” and add the name “docker-parallels”. This will create a new Parallels VM with 20GB HDD and 1GB RAM by default. In case you want to disable sharing the /User mounts, add –parallels-no-share.

docker-machine create --driver=parallels docker-parallels

Add the environment variables to your shell and run docker pulling the latest Fedora container.

eval $(docker-machine env docker-parallels)
docker run -ti fedora:latest bash

Automate it

I’ve partially modified the Docker toolbox script in order to support Parallels.

wget https://raw.githubusercontent.com/dnsmichi/docker-tools/master/toolbox/scripts/osx/start.sh -O /usr/local/bin/enable_docker
chmod +x /usr/local/bin/enable_docker
enable_docker

 

Conclusion

While the Docker Machine integration allows room for improvement the Parallels driver works like a charm. Though I have to admit – while looking into the Parallels integration, Docker announced Docker for Mac and I was eagerly waiting for it.
Both methods are working, but the Docker for Mac application integrated natively into OSX is pretty slick. I like it a lot!
If you are looking for more Docker and its many possibilities – follow our blog closely and visit the Docker training sessions 🙂

Michael Friedrich
Michael Friedrich
Senior Developer

Michael ist seit vielen Jahren Icinga-Entwickler und hat sich Ende 2012 in das Abenteuer NETWAYS gewagt. Ein Umzug von Wien nach Nürnberg mit der Vorliebe, österreichische Köstlichkeiten zu importieren - so mancher Kollege verzweifelt an den süchtig machenden Dragee-Keksi und der Linzer Torte. Oder schlicht am österreichischen Dialekt der gerne mit Thomas im Büro intensiviert wird ("Jo eh."). Wenn sich Michael mal nicht in der Community helfend meldet, arbeitet er am nächsten LEGO-Projekt oder geniesst...

Wenn der Apfel mal wieder madig ist…

Auch wenn Apple die wohl schönsten Computer baut, so kommt es vor, dass doch ab und an mal ein Zahnrad klemmt.
Da sich NETWAYS mit mir einen ehemaligen Apple-Supportler ins Boot geholt hat (sollte in jeder Firma vertreten sein, wo mehrere Macs am Start sind 😉 ), kennt man bereits die ein oder andere Macke der Geräte und deren schnelle Problemlösung.
Oftmals sind es die komischten Sachen, die in solchen Situationen der Fehlfunktion doch helfen können. Das sind zum einen der PRAM-Reset und der SMC-Reset. Beide Resets ähneln von den Tastenkombinationen eher einer Fingerdehnübung und derer Durchführung und Erfolg scheint auch mehr dubios. Manchmal hilft’s dann aber doch 😉
Nach erfolgreich vollzogenem Beschwörungstanz sollten die Räucherstäbchen nun auch bis zur Hälfte hinuntergebrannt sein, nun kann das Tastendrücken los gehen!
PRAM-Reset:
Hierbei wird der Mac komplett heruntergefahren und anschließend wieder angeschaltet. Dabei sollte er immer am Netzteil sein und das Netzteil in der Steckdose stecken 😉 Anschließend werden die Tasten P, R, ALT und CMD gedrückt (und sie bleiben weiterhin gedrückt) bevor der allseits bekannte Startton erklingt. Man verharrt nun in dieser Position so lange, bis der Ton das dritte mal aus den Lautsprechern schallt. Danach können die Tasten gelöst werden und der Mac fährt nun wie gewohnt hoch.
SMC-Reset:
Hierbei wird ebenfalls der Mac heruntergefahren und an seiner Stromversorgung angeschlossen. Bei diesem Ritus müssen die Tasten CTRL, ALT und Shift gedrückt werden und dann wird der PowerButton gedrückt und es muss wieder in dieser Position mindestens 20 Sekunden gewartet werden. Danach alle Tasten lösen und den Rechner wie gewohnt anschalten.
Safe-Boot:
Das kennt man. Wohl noch von Windows 95 und seinen abgesicherten Modus. Beim Mac verhält sich das ähnlich.
Zunächst sollte der Stand der Räucherstäbchen kontrolliert werden. Sind sie heruntergebrannt? Nun heißt es schnell sein, Nachschub einlegen!
Glüht das Stäbchen, so kann mit dem Prozedere fortgefahren werden. Hierbei wird wieder der Mac komplett herunter gefahren und im Anschluss mit gedrückter Shift Taste hochgefahren. Das veranlasst den Mac sich auf sein elementares zu besinnen und fährt in den Safe-Mode hoch. Ein kleiner Balken sollte erscheinen (Sollte etwas außerhalb vom Monitor erscheinen, empfehle ich von den Räucherstäbchen in Zukunft Abstand zu nehmen). Dabei werden beim Start diverse Checkroutinen durchgeführt. Ist der Mac nun hochgefahren, fällt auf, dass der grafische Firlefanz nicht mehr so schick aussieht wie zuvor. Das liegt daran, dass nur die wichtigsten Dienste und Treiber geladen wurden. Grafikbeschleunigung zählt leider nicht dazu 🙁
Der Safe-Mode ist ganz nützlich, wenn das System unter normalen Umständen nicht mehr richtig funktioniert, oder man gar selbst einen Treiber eingespielt hat, der das OS zum Abstürtzen zwingt (ich denke da mal an die guten USB->RS232 Adapter – meinen Mac zwang der Treiber schonmal in die Knie).
Ich hoffe ich konnte euch ein paar wertvolle Tips mit auf den Weg geben, die euch bei der weiteren Reise durchs Leben mit eurem Mac helfen können.
Und zur Vervollständigung auch nich die Links zu den KB-Artikeln bei Apple, die das Verfahren etwas sachlicher darlegen:
PRAM-Reset
SMC-Reset
Safeboot

Mac OS X Command Key

Quelle: Flickr “cogdogblog” unter CC Lizenz

Komische Sache: Ich bin seit einem Jahr Apple User und habe mich noch nie gefragt, was dieses komische Symbol auf der Command/Apple Taste eigentlich bedeutet. Aber jetzt habe ich zufällig im ApfelBlog dieses Bild gesehen, bin den Links ein bisschen gefolgt und in der Wikipedia wirds erklärt:
Ursprünglich hatte die Taste ein Apple Logo enthalten, aber Steve Jobs wollte nicht so viele Apple Logos an den unterschiedlichen Stellen verwenden. Da wohl eine Deadline bevorstand, hat die Tastaturdesignerin verschiedene Logobücher durchwälzt und dabei dieses Symbol gefunden. Es stammt aus Skandinavien und weist dort auf eine besondere touristische Attraktion hin. Da es den anderen Leuten im Team gefiehl, wurde es das Comman Logo auf dem 1984er Macintosh.
Mich erinnert es am ehesten noch an ein Autobahnkreuz.

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.

Nagios unter Mac OS X installieren

Auf Macworld habe ich gerade einen Artikel gefunden, wie man Nagios auf einem Mac OS X 10.5 Server installiert. Ich hab den Artikel überflogen und denke, dass die Vorgehensweise genauso auch auf einer normalen Leopard Version funktioniert, denn der Autor benutzt hauptsächlich MacPorts. Wer also schon immer mal Nagios auf seinem MacBook haben wollte, kommt mit der Anleitung bestimmt weiter. Vielleicht gibts ja auch ein check_macbook_battery dazu.

Julian Hein
Julian Hein
Executive Chairman

Julian ist Gründer und Eigentümer der NETWAYS Gruppe und kümmert sich um die strategische Ausrichtung des Unternehmens. Neben seinem technischen und betriebswirtschaftlichen Background ist Julian häufig auch kreativer Kopf und Namensgeber, beispielsweise auch für Icinga. Darüber hinaus ist er als CPO (Chief Plugin Officer) auch für die konzernweite Pluginstrategie verantwortlich und stösst regelmässig auf technische Herausforderungen, die sonst noch kein Mensch zuvor gesehen hat.