I just came back from DockerCon Amsterdam 2014 and here is a summary of the conference with some comments.
The theme of the conference was of course Docker. Just for fun I wrote down the most used terms on the conference just to give you a hint of what the sessions were about…
Orchestration, micro-services, cloud-native, distributed apps, scale and continuous delivery.
The common thread through almost all sessions were orchestration. Seems to me like the word orchestration means a whole lot of stuff while listening to the sessions. It involves creating Docker hosts, containers, clusters and monitoring just from the top of my head.
Docker and especially Solomon Hykes (original creator) and Ben Golub (CEO) spent some time explaining how the project is maintained, governed and how they will try to scale the project to keep up with all Pull Requests coming in. Some stats were presented and the numbers are quite astonishing.
It is neat how they handle organizational changes by doing PRs. The Open Design principle is also applied on organization changes by maintaining a file called MAINTAINERS in the repo. Check it out on
Github.
Henk Kolk from ING presented how they have reorganized in order to increase speed of development. Developers are first class citizens.
Announcements
Docker Compose
An apparent theme of the conference was
distributed apps. Meaning that you will run several containers cooperating to fulfill an applications goal. The way Docker has solved it with Docker Compose is very similar to how
Fig works. A file describing what containers to bring up and links between them etc. I’m really looking forward to start utilizing the container composition capabilities on our systems.
containers:
web:
build: .
command: python app.py
ports:
- "5000:5000"
volumes:
- .:/code
links:
- redis
environment:
- PYTHONUNBUFFERED=1
redis:
image: redis:latest
command: redis-server --appendonly yes
And to have the containers up and running
Docker Machine
In order to address some of the problems involved by getting Docker to run on a new host they announced Docker Machine. It comes with a new command ´machine´ that effectively creates a new Docker enabled host. There are a number of providers that you can use such as AWS, DigitalOcean, VirtualBox etc. When a new host has been created you can run Docker commands on your local machine that actually run on the newly created host. How cool is that?
machine create -d [infrastructure provider] [provider options] [machine name]
I can directly see the use of it in development. However, for production I don’t know yet.
Docker Swarm
Another announcement made on DockerCon Amsterdam 2014 was Dockers new cluster system. It enables us to control a cluster of Docker hosts that automatically puts a new container on a suitable host when running the usual ´docker run …´ command. You can set constraints on the run command for all properties that ´docker info´ gives you. So for example, you can state that OS must be Ubuntu.
% docker run -d -P -m 1g -e "constraint:operatingsystem=ubuntu" redis
Docker Hub
The team from Docker Hub announced a couple of new official images, Tomcat was one among them. They also announced Docker Hub Enterprise for on-premise use cases.
About CoreOS Rocket
The announcement of the CoreOS Rocket project was not commented and discussed officially on the sessions by the Docker team. Rocket is a new container engine project with a similar goal as Docker. It consists of two parts if I am correct; a container specification and an implementation. They spent quite some time talking about some of the things that CoreOS mentioned as flaws in Docker. I had a chat with a guy from the CoreOS team attending the conference. He made some good points and presented why they have started Rocket. The main reasons he mentioned:
- The all-in-one binary for doing everything. Rocket is split up into multiple binaries more in the way the initial standard container manifesto Docker had. For example. There is probably no need for having the ability to run ´docker push´ or ´docker build´ on a production Docker host.
- The design choice of having a daemon process for Docker. The design of Rocket is the reverse. Running containers should not depend on a running daemon. A start of a new container is a one-off job for Rocket which terminates after the container is up and running.
He also mentioned that Rocket probably will be somewhat interoperable with Docker.
Fluffy but important takeaways from DockerCon
The conferences ended with a really good panel discussion. Here are some quotes I found inspiring.
Speed, especially in development process, is everything! – Adrian Cockcroft
Go deep, not broad. – Adrian Cockcroft
Do yourself a favor and present a new idea/technique in a representative way. A good idea deserves a nice presentation and good argumentation. Try to work with people upstream and downstream. – Solomon Hykes
If you know you have an excellent idea, believe in yourself. Don’t let negative opinions get in your way. – Solomon Hykes
All in all. DockerCon Amsterdam 2014 was a good conference. A lot more stuff can be found on
Twitter.