This morning was an exciting day for Docker aficionados, Docker 1.0 was just released!
At the surface, the reason this is so important is that Docker is officially and for the first time being suggested for production workloads now. Before 1.0, Docker would tell you not to run Docker in production. They said that things might break between upgrades and that APIs would change. But now they are set in stone for backwards compatibility and upgrading (until Docker 2.0 of course). So what does this mean for the community? One of the biggest improvements wasn't on the codebase itself but in the Docker Index (now the Docker Hub). But before I go into those changes, let's look at the numbers...
But what has changed under the hood? Let's review.
New Docker Index... the Docker Hub
In a not-so-subtle ode to GitHub, today the Docker Hub has been released– hub.docker.com
I have to say that I LOVE the new design. It is equal parts minimalistic and informative. And the container search feels like it returns results that are much easier to judge.
One of the other neat things is how many new "official" Docker containers there are. MySQL, MongoDB, Node, MySQL are just a few. A
docker run wordpress gets you the official Docker WordPress container.
One of the biggest questions I have is how these officials containers are being built. Unlike Trusted Images, there are no links to the
Dockerfiles on the Hub that produced these images. I am sure that will be coming soon as the Hub is brand new.
OAuth for Docker Hub
One of the most exciting parts for the Docker ecosystem is the addition of an OAuth API. This will allow third party apps to tie into the Docker Hub to pull public and private container information directly into an app. For PaaSes built on Docker (like Flynn and Deis, this is going to allow greater flexibility. For CI/CD built on Docker (like Shippable and Drone) this is going to enable a MUCH more powerful workflow. Docker's power has always been on the social/collaborative side of linux containers, and with OAuth support, this is going to supercharge the community and ecosystem growth. For those itching to get started, you might have to wait a little longer. Here is a quote from the OAuth page... "You will need to register your application with docker.io before users will be able to grant your application access to their account information. We are currently only allowing applications selectively."
Dockerfile adds COPY instruction
In the code itself, nothing major has changed between Docker 0.11 and 1.0, but there were a few minor changes, like the addition of the
COPY instruction. The new COPY instruction copies files and folders as-is from the build context.
COPY <src> <dest>
On the surface,
COPY is a lot like
ADD but without the ability to grab things from the Internet. Also,
ADD will unzip local tar files when moving them and
COPY doesn't try to be so smart.
ADD, COPY and volumes retain permissions
COPY commands now do a better job with permissions.
Pause and un-pause running containers
Instead of stopping containers, you can now pause for better resource scheduling. I will have to do more research on the difference between pause and stop and followup with a new blog post soon.
Increasing the number of filesystems supported will help Docker become ubiquitous. XFS is an exciting next step for new storage and filesystem options because of its snapshotting capabilities.
Port reservation from IANA
Ever wonder who is in charge of the
/etc/services file? If you don't know the IANA (Internet Assigned Numbers Authority) is responsible for the global coordination of the DNS Root, IP addressing, and other Internet protocol resources. They are the guys who dole out official port numbers for IP protocols. And now Docker's API ports are official: 2375 for HTTP and 2376 for HTTPS. For those who have struggled with port conflicts between CrashPlan and Docker on their Mac, this is a godsend and the best news of the day. Though
boot2docker has gotten around this port conflict in recent releases, it has always been a sore point for those of us using Docker on a Mac.
It is incredible to think that the Docker project is just 15 months old. So much progress and so much adoption over this amount of time. It is clearly resonating with the DevOps community and making tidal waves in terms of both innovation and adoption. It leaves you wondering what the landscape will look like in the next 15 months. If I were to make a prediction, I think that the tooling for building apps on top of Docker is the next big area to see explosive growth. It is still not easy, and that leaves an opportunity for people to keep expanding the ecosystem with new ideas. I want to extend a big congratulations to Solomon Hykes and his team for creating a technology that is changing all our lives for the better. Thank you guys!