Docker 0.4.0 release note
github.com
github.com
Version 0.4 introduces a remote HTTP api, a new Build functionality, and an experimental Openstack integration.
Maybe someone should hack a tool, point an URL and get a TLDR; version
If you're a chef user, you can use docker to "just-in-time" compile your chef recipes into a container almost as portable as a static binary. You can then send that container to me, and I'll be able to run it regardless of what configuration management I like to use on my machine.
Perhaps it's my inexperience, but I find chef scripts to be very fragile because of the large amount of external dependencies they generally contain. All of these dependencies are very stable: nobody takes down tarballs and packages randomly, but a large number of low probability events can add up to a high probability.
That makes image based deployments appealing, but you still need to have a reliable, repeatable capture of the steps that went into building the image...
In my experience, going back and running deploy scripts I wrote a year ago have about 10% probability of still working. Aside from chef's breaking changes (and versioning mess), there's a ton of things outside of my control that take things down. Debugging has been a nightmare.
I love the concepts and community around Chef, but I've found for my use case, it was an all around bad choice.
What causes the confusion, I think, is Docker's premise that the best executable format for software is a virtual computer encapsulating all of the program's dependencies. Because of this, the software you're running starts looking a lot like the computer it's running on - because they're both computers! It's just computers running on computers running on computers, or as Alan Kay liked to say it, "Real Computers All The Way Down" [1].
I believe things are bound to get more confusing for a while, but the result I believe will be one of computing's most exciting development.
[1] http://www.computerworld.com.au/article/352182/z_programming...
Doesn't doing that make a git repo of all the files currently in the container? Wouldn't it take ages to upload this to your machine, versus just uploading a dockerfile and having it rebuild the image from scratch?
I get that Docker containers are sort-of VMs, but I don't really understand the freeezing functionality at the moment... It seems to me that you'd have to freeze the entire binary image, whereas an ansible script/Docker build file would be much more portable and result in the same thing.
That's amazing, it means that I can replace my small VMs with Docker containers on a big box.
Edit: As shykes mentions, the two are really more complementary than overlapping. I'm planning to use Docker's new build scripts to construct pre-built Docker images, which I will subsequently deploy via Ansible (a configuration management tool akin to Chef). Up until today I was building Docker images via Ansible, but now I can handle that within Docker itself, freeing up Ansible to handle tasks better suited to its bailiwick.
Another example is using Chef to maintain your Docker deployment and the distributed system supporting it, then using Docker to deploy your application payload.
To create a virtual machine, you could use EC2, VmWare, Linode, VirtualBox, LXC, libvirt, Jails, Zones, etc. Now Docker is another option.
Once the virtual machine is created, you could use Chef/Puppet/Custom Scripts to install and configure software packages.
Fun fact: before running on lxc, dotCloud (where Docker originated from) was initially based on OpenVZ (which was great). As the mainline kernel's support for containers improved (in large part, I believe, thanks to the pioneering work of OpenVZ), eventually we moved over to that.
I'm not looking for any kind of concrete number, but let's say I've got a Postgres running on an m1.large. Any idea how running Postgres under Docker would change my performance characteristics?
http://lxc.sourceforge.net/index.php/about/kernel-namespaces...
Postgres is a beast tho (albeit a cute and friendly beast), it's probably doing something weird that lxc won't like.
Vagrant provisions Virtualbox, which lets you run separate kernels, on various different virtualized CPU architectures.
https://github.com/dotcloud/docker/issues/404
http://fabiorehm.com/blog/2013/04/28/lxc-provider-for-vagran...
If we think it makes more sense to build your own, we'll tell you, and will share our experience to save you time while we're at it. The more containers out there, the better for everyone :)
Not that raw LXC is much better... It all seems very immature.
Also, if you can let us know what you were doing when the command didn't work the same way every time? Have you filed any issues for those yet? If not, can you, or tell me here and I can do it for you. If we don't know about your issues, it is hard for us to fix them.
Thanks