a rant on Docker, containerisation, and teaching, inspired by Curtis Millar
written up 2016-12-14

Andrew Taylor has written about his plans to produce a Docker image for COMP1511, similar to the one he built for COMP2041 in 16s2, to make home computing easier for new students who have never programmed before.

I have several objections to this. I feel that supporting BYOD systems for any students would be an unbounded time sink, and that a more effective use of time is to get students familiar with the *nix environment as fast as possible, pushing students onto CSE’s infrastructure.

Andrew Bennett noted that, to some extent, this is a good solution to the BYOD problem, and really encourages homogeneity.

On the other hand, as Curtis Millar has pointed out, what you really need is a virtual machine, not a container. Containers aren’t intended for long-lived state, and Docker is notoriously bad at it. The whole point of Docker is that long-lived state should live outside the container, and you can easily create and destroy containers as you need them.

Docker intends to isolate and homogenise services.

Docker isn’t a workstation environment.

Then there’s the setup. On Windows, the official installation guide goes: upgrade to a “professional” edition of Windows, make various BIOS changes to enable CPU virtualisation extensions, then, enable Hyper-V, install Docker, and it takes control of Hyper-V.

You can now no longer use Hyper-V yourself and you can’t install other virtualisation tools, because they conflicts with Hyper-V. Hyper-V also reflects a very radical and hard to reverse change to the OS.

The official installation on macOS (née Mac OS X) is to uninstall VirtualBox, install Docker, and let Docker install it’s own VirtualBox, or alternatively if you have a new enough system, xhyve. You can now no longer install or use other virtualisation tools, as above.

Honestly, why bother?

This is why we have Open Virtualisation Appliances, which you can readily and painlessly install into VirtualBox in a cross-platform, well-documented, stable, reliable, and intended way.