I realize this is hard to ask for at this stage because Docker is still rapidly evolving, but all I want is a thorough book/tutorial/guide/screencast that walks me through the process of barely understanding Docker to using it for my web apps.
I know that I will want to use this in the future, I just can't be bothered to learn yet-another-thing given how fast everything changes nowadays.
Is anyone writing a book on Docker? Tutsplus.com screencast series? Udemy course?
Yeah, a full end-to-end explanation of how Docker can help you is one of the things we need to get better at. A full revamp of the documentation is underway :)
That video of the project's activity over time is pretty awesome and almost brought a tear to my eye :) https://www.youtube.com/watch?v=FCiS812oRU8 (link didn't work for me on iOS)
[00m00s] In the first few months you can clearly see that Docker is a small side-project within Dotcloud. There is Andrea Luzzardi, Joffrey Fuhrer and myself toiling away and going door to door showing our work to various engineering teams in the San Francisco area. Invisible in this video is an early proof-of-concept written in Python by another Dotcloud employee, Francois-Xavier Bourlet. We ended up going for another architecture and rewriting the code in Go, but it's Francois-Xavier who came up with the name Docker :)
[01m21s] On March 13 you can see a sudden burst of activity. This is when we decided to go all in. We flew all remote employees in and commandeered half of the company to work on Docker full-time for 2 weeks to test it, document it, improve it etc. The other half would hold the fort and continue running the existing product. In parallel we gradually give early access to more and more friends in the engineering community - at this point about 50 people have access to the Github repository, from companies like Uber, Twilio, Meteor, Stripe, Soundcloud, Ebay, Heroku etc.
[01m34s] On March 20 Docker is "leaked" to Hacker News [1] after my lightning talk at Pycon (we expected 30 fellow lxc nerds, but it turns out Pycon lightning talks are a huge thing with an audience in the hundreds... oops!). Note that there is not much change in activity, because the repository is not yet open-source, so it is shielded from the buzz. The term "vaporware" starts being used, oh no! We rush madly to release the code ahead of schedule.
[01m51s] On March 27, one week after the "leak", we are finally ready to open the repository. After the HN announcement [2], pull requests start pouring in amazingly quickly. You can also see the documentation being merged into the main repository at the last minute.
[06m27s] On September 13 after an epic thread on the mailing list [3], we starting vendoring Go dependencies. You can clearly see all the new files appearing, then sitting there pretty much untouched except for the occasional update. Note: vendoring worked just fine for us.
I work for a large financial company. At our shop, we are currently building out an internal cloud infrastructure where we build on too of the OpenStack API to provide users with self service deployment much like AWS.
In order to deploy to production, we mandate a process requiring users to have an existing chef recipe before any production guest can be deployed. We also restrict logins to existing production nodes unless there is an emergency. (This attempts to keep configuration management entropy to a minimum.) all of this works ok, but I think it could be better with Docker.
In a few weeks, I have a chance to present a new idea to senior executives. I'd like to pitch Docker, at least as something to keep an eye on. Any thoughts on what points I should drive home?
Offhand, the major benefits for your use case seem to be:
- Speed and Flexibility: Extremely quick turn around time from development to production; Docker images usually start in under 10s and multiple images can be run concurrently. If a user needs to update their running service(s), they can even have multiple versions running at the same time behind something like HAProxy (which itself could be in another Docker container), allowing real-time migration.
- If your users build their images and test them on their own machines, they can then deploy the same images to your production machines with the knowledge that (barring unusual circumstances) they will have the same exact image and dependencies running there. This means no need to write a recipe, less worries about security, and more freedom for your users to use whatever libs they deem necessary (assuming such freedom is allowed).
- If running images directly is not doable for security reasons, your users could use Dockerfiles [1] which still allow you the benefits of Docker but with the ability to review all commands used to create the image. They can even be built in real-time off of GitHub pushes [2] (disclosure: I'm a co-founder at Quay.io)
It's worth noting that as of yesterday the Docker index (https://index.docker.io) now offers github-style paid features. You can host private docker images, tie them to your source repo so that they are automatically rebuilt from source, trigger web hooks on new versions, etc.
Having been @ Docker for about 9 months, all I can say is I am blown away by the incredible involvement from the community and the vibrant ecosystem that has been created as a result.
While it has been an amazing year, I am even more excited every day about future prospects and momentum we're collectively building in the industry. This is only the beginning.
I thought I have started to look into Docker in April last year. To make sure I didn't make up things, I looked into my git logs. The first reference to Docker in the commit message is:
Author: Vo Minh Thu <noteed@gmail.com>
Date: Sun May 5 23:21:51 2013 +0300
Run ssp-build inside docker
ssp is the name I used for Assertive, which was supposed to be a hosted Continuous Integration service for the OpenERP community. ssp-build is spawned inside Docker by a worker process. I put it on hold since around May although I put it online a few days ago (Here is an example of what it does: http://assertive.io/build/1).
Actually I have a first mention of Docker in my TODO.md file dating back to March 29 !
Assertive will be generalized and will be coupled to https://reesd.com (that's the reason I went to put it online a few days ago).
Docker was my first practical exposure to Linux containers. Thanks a lot for making it a great open source project !
I've been reading about Docker for a while. But am unable to wrap my head around it. I've gone through the samples and I only see it good for creating SaaS apps. Can someone please correct? What am I missing? What is the brouhaha all about?
Having just gone through all of the tutorials and documentation, I can see this type of thing shaking up configuration management in enterprise environments quite significantly. The amount of headaches I have keeping several environments (Dev, Staging, Test, UAT, Pre-Prod, Prod) in sync - across any project I've worked on - would be far better maintained using this kind of container-based management.
And without the security benefits of proper virtualisation, too. At least lxc since recently has the ability to run containers as a regular user, but I'll stick to KVM guests secured with MLS policies for now.
Because the guests have their own SELinux policies. Docker containers don't come with policies, but if it would support running containers under a user account I could at least restrict each to their own category so that theoretically a chmod -R 777 / (inside a container) and access to the host wouldn't compromise other containers (unless the kernel is exploitable, in which case KVM would still win).
I have been using Docker to grade HW submission since October, in a more disposable and safer way, and I am building an automated system around it, kudos to Docker and the team
I know that I will want to use this in the future, I just can't be bothered to learn yet-another-thing given how fast everything changes nowadays.
Is anyone writing a book on Docker? Tutsplus.com screencast series? Udemy course?