cboettig / labnotebook

:notebook: Source code and version history for my online lab notebook
http://www.carlboettiger.info
Creative Commons Zero v1.0 Universal
98 stars 61 forks source link

minor typo fixes #120

Closed benmarwick closed 10 years ago

benmarwick commented 10 years ago

Thanks for all this detail, I've found your docker posts very interesting also. Haven't yet found a compelling reason to use docker or BCE in my workflow, mostly due to the need to work with students and keep the toolkit as small and simple as possible. I just have a shell script that provisions my VM (which might be on a PC, mac or linux machine) with stuff I need, and call that my environment. What am I missing by not using these other en vogue tools? Since I can't assume a linux machine (due to students), docker doesn't seem to add anything. And my provisioning script is so simple I'm not sure if one of the other tools would save much effort.

cboettig commented 10 years ago

Thanks for the fixes, and great question, I'll give you only a partial answer.

Your virtualbox+script approach sounds basically the same as what BCE is doing (a provisioned virtualbox as well). Having it built by Packer the way they do, instead of just a shell script adds a layer of abstraction that makes it easy to provision other image types (e.g. generate an Amazon EC2 image from the same source by just changing a command).

Docker is quite popular on windows and macs by using boot2docker -- which is, you guessed it -- just a tiny wee virtualbox, so cross-platform wise equivalent to what you are doing. It has the advantages of being lighter (24 MB, vs usually several gigs for a ubuntu-based VM) and that you can deploy the identical environment to a linux cloud server where you can skip the boot2docker vm level and avoid the performance cost of that virtualization (which can be very large).

Docker has other nice features that you can't get from a VM approach. In particular, it's easier to build / extend existing environments rather than provisioning from scratch; images and changes to them are versioned in a rather git-like fashion (you can commit, diff, roll back), and you avoid dowloading redundant parts when say, grabbing a bunch of different docker images that share a common base.

If you haven't read the BCE paper, I recommend it for setting the scene. They spell out the advantages of some of the en vogue tools, but also speak very positively and with case studies on just using bash scripts to accomplish largely the same thing.

benmarwick commented 10 years ago

Thanks for the pointer to boot2docker, the memory savings are impressive. I'll give that a go, and check out the BCE paper as you suggest. I first heard of it from Philip Stark at the UW Reproducibility Workshop in May this year.