Recently, we’ve brought on a server with a sixth-generation iDRAC. These don’t support HTML5 for the virtual console feature, but instead use a Java-based application. Persuading these older Java consoles to behave, especially on a modern system, can be difficult. This is due to multiple dependencies.
In this particular example, the iDRACs work best with a particular version of Java, with particular security settings, with particular libraries. Some of these are reasonably consistent, across all connections to any iDRAC6, and others change often, like the address. We installed libraries and tweaked Java settings for the best part of an afternoon, knowing there had to be a better way. It takes an incredible amount of time to get right, with very little gain. Even worse, we would need to do all of that set-up again if the iDRAC needed use in an emergency.
How does Docker help with dependencies?
If you’re not familiar, Docker is a tool providing small-scale virtual-machine-like blocks called containers. It’s popular for developers, and for scalable infrastructure, and is a recent hot topic in the DevOps world.
Domistyle, on Github, has crafted a fantastic container to group up all of the consistent, fiddly options for Java and allow quick-and-easy access. The container on requires an IP address, username, and password, and provides either a VNC session or HTML5 browser page showing the virtual console. Check out his work on the Docker Hub. RockyLuke has had a similar idea with support for HP’s iLO and Supermicro’s KVM. drac-kvm requires a little more work to set up, but encompasses three major server providers with ease.
Along similar lines, NASA have dockerised their Land Information System. Discovering that a complex set of dependencies was causing difficulties installing the software, the engineers found a way around the issue.
Engineers say that “Installations that took weeks or months can now be completed in minutes either in the cloud or in on-premises clusters.”
What about for fun?
On a less professional note, it’s possible to quickly deploy a LAN cache. This allows allows people to save bandwidth at gaming LAN parties. Why would anyone download a given game a hundred times over a 10Mbps line? Instead, you can download it, cache it, and share the download to everyone else at much higher speeds. Using a cache in this way saves time and frees bandwidth to be used for other downloads. Caching disk images, common libraries, or updates to an OS can be worthwhile; you aren’t limited to video games.
Do you know any other times where software with complex dependencies was quickly installed with Docker? Have you spent hours trying to get something just right, only to realise someone’s beaten you to it? Let us know at email@example.com.