Docker: Lightweight Linux containers for consistent development and deployment
linuxjournal.com
linuxjournal.com
It's some pretty amazing tech, and I love it with Vagrant for my local dev environment, and for full deploys. I'm not such a big fan of Dokku- it's a great 'heroku replacement' but one of the best strengths of docker, is you can just upload your code to a private repo(or use a trusted build on a private repo!) and pull that down and run to deploy. Dokku going through the buildpack process, while making it nice from a quick git push angle, sacrifices one of Docker's strongest features(consistency).
Having said - I'm still trying to work out the combination of source repo and docker repo - i.e. 1 dev makes a code change - they commit the code to github - they then commit the docker image to the registry.
Now - does developer number 2 'git pull' or 'docker pull'
What I really like is how docker does not really enforce anything upon you - leaving the above question to be answered any which way.
Docker ftw!
Right now one of my biggest curiosities, is doing mass deploys and unified logs. I've not tried to so it hasn't mattered yet, but it could be fun.
The useful features of Docker are resource isolation, image layering, and staged deployment. The idea that you can run two versions of PHP or move your files between distros has been a solved problem for at least 30 years.
But docker certainly has a nice way of letting you use all these features in a friendly package. It's often not the most original things that are the most groundbreaking, sometimes it's when something comes along and takes all the parts you already have and puts them all together in a useful way.
However, if you don't have Linux, Vagrant can start a Virtualbox image with Linux and run Docker in it with a little modification in the Vagrantfile
Btw, I found the vagrant documentation for the docker provider to be a bit lacking. I probably wasted a day getting it to work :(
If you're just trying to get started with Docker, Boot2Docker (https://github.com/boot2docker/boot2docker) is probably the way to go.
If you're looking for an Ubuntu-based Vagrant box, you can try out my Vagrant box (http://ferry.opencore.io/en/latest/install.html#os-x). It's based off of 14.04. Be warned though, my box is very large (~4GB) as it contains many pre-baked images (Hadoop, Cassandra, etc.).
"On-Topic: Anything that good hackers would find interesting."
The feature sets/usage sweet points of OS-level package managers, language-specific package managers, VMs, containers, distinct/same hosts, ... are both overlapping and different enough that you need judgement to choose which one you want, but they are certainly not exclusive.
If your use case means you prefer VMs over containers and you don't need to combine them, fine, but every situation is different.
Someone with access to the docker control socket effectively has root on your machine: e.g. `docker run -v /etc:/external_etc ubuntu visudo -f /external_etc/sudoers`.
Don't let untrusted users (or scripts) run docker.
http://docs.docker.io/articles/security/#docker-daemon-attac...
Your sweeping statement applies to a minority of them.