I’ve been using Docker a lot recently for my bioinformatics work. I’ve really fallen in love with it as a way of quickly getting things going.
You want to install and use a bioinformatics software package… Now!
First, you have to find the package to begin with – which usually means navigating someone’s webpage or GitHub page and figuring out what to do and how to install. It’s not really fun.
Second, you can end up in dependency nightmare land, where you just go from updating one thing to installing something else..
Bottom Line: This just takes time and (mental) energy.
With Docker: You find the Docker image, which is very fast in practice. You install the image – a simple standard one-line procedure… and then you use the package!
You want to use a Linux package under Windows or on a Mac
Without Docker: you have to have a virtual machine or somehow install using the new bash for windows systems (hint: don’t do this second option).
With Docker: You just “run the image” (actually, create the container), so you can easily use Linux-only software under windows.
Also, although Mac OSX is so so similar to Linux in the internals… it’s not Linux. So you can definitely run into problems.
Bottom Line: Docker makes this very straightforward. No thinking.
You want to have multiple versions of a software package available for usage.
Yes, this sounds weird but in practice, I find that I often wish that I had the newer or older version. I was recently using GATK and found that I wanted to have GATK3 and GATK4 available. With Docker, I just have separate images for each. (Sure, there are easy ways around this but Docker just makes it simple to have the multiple versions organized). Again, in practice the mental energy counts.
Bottom Line: Docker makes this simple and keeps the separate versions separate and clear. The easy way.
I have a dual-boot machine. I also have virtual machines (both VMware and VirtualBox) for Linux. I also have “Bash on Ubuntu on Windows”. I have used all of these. I’ve been dual-boot for >10 years and I’ve used virtual machine approaches for 10 years. I just get tired of playing with system configuration/memory/etc issues when I want to do my real work.
And I really like that I download the image and just start using software. So I am a convert to the Docker world for now, at least.
Bottom Line: I’m a fan!