Docker has only gained traction since its launch a little over a year ago as more companies join the community's efforts on a regular basis. On July 30, the first official Docker build for openSUSE was released, making this distribution the latest among many to join the fray. I connected with Flavio Castelli, a senior software engineer at SUSE, who works extensively on SUSE Linux Enterprise and has played a major role in bringing official Docker support to openSUSE. In this interview, he discuses the importance of bringing Docker to each Linux distribution, the future of Docker on SUSE Linux Enterprise, and other interesting developments in the Docker ecosystem.
What were the primary motivations that led to your work in bringing Docker to openSUSE?
Flavio Castelli: Docker is an extremely versatile tool. Once you add an application to an image you can use it everywhere, from bare metal machines all the way to the cloud. The very same image can be used on development, testing and production systems; this is an incredible life-saving feature. If you want to experiment with a new technology or build a quick proof-of-concept you can find a ton of Docker images with all sorts of software pre-installed and configured. You just need to ask Docker to download them and voilà, you're ready to go. Like many others, openSUSE is the Linux distributions that I use on a daily basis. I wanted to be able to use all the Docker goodies without leaving my favorite environment.
It seems Docker is becoming ubiquitous across most major Linux distributions. Do you see the adoption of Docker as necessary for all distributions at this point?
Today, I think the ability to run Docker is a mandatory requirement for all Linux distributions, fortunately this is also the easiest part of the job. Supporting Docker on a Linux distribution involves two steps, the first is adding the ability to run Docker, and the second is providing an official base image. Providing an official image for Docker requires more effort, but it is something that I highly recommend. Building images with Docker is incredibly easy thanks to its integrated build system, however, these new images must be based on an existing one. The creation of the base image can be complicated and time consuming because each Linux distribution has its own build tools and requires specific source files. Each distribution should take this trouble away from users by providing an official and maintained base image, allowing users to focus on creating new content.
What are the biggest benefits you think will come to openSUSE as a result of adding official Docker support?
There are several advantages I can think of. By being able to run Docker our users will be able to access to all the images published (14,000 and counting) on the Docker Hub. Additionally, by providing an official openSUSE image we can expose the incredible resources of openSUSE to anyone interested in building Docker images. The Docker community can now access the power of tools like the Open Build Service and its “openSUSE declination,” while the openSUSE community can grow in numbers by attracting new users and contributors, mutually benefiting both groups.
What kind of upstream contributions have you been making to Docker?
I made some small contributions to Docker including bug fixes and better support for Linux systems using SysVinit. I focus mostly on bringing Docker to both openSUSE and SUSE Linux Enterprise. The next version of SUSE Linux Enterprise is going to offer Docker as a technical preview. We want Docker to be integrated into both openSUSE and the SUSE ecosystem and provide our customers with the best user experience. Of course, this requires some work from our side.
What additions to Docker do you most want to see at this point?
I think the Docker community is already working on many new, interesting additions. Personally, I would love to see the ability to add a EULA to an image. This would make it possible to publish images based on commercial Linux distributions, like SUSE Linux Enterprise, or that contain commercial software on the Docker Hub. I already created an issue about that on Docker's GitHub page; I might tackle it in the next months.
You stated on your blog, back in April, that you hoped to see more integration of Docker into SUSE Studio. What kind of progress has been made on this over the past 4 months?
Unfortunately no progress has been made on this front during the last months. Everyone at SUSE is busy building/adding support to the next version of SUSE Linux Enterprise.
What major obstacles are in the way of making this happen?
I have been part of the SUSE Studio team, so I am familiar with its internals. Adding Docker support can be achieved in two ways.
SUSE Studio uses KIWI internally to build its appliances, which recently added support for the Docker format. Leveraging this new KIWI feature would be the fastest way to add Docker support to SUSE Studio. However I think that would not be the best choice because the resulting images would be seen by Docker as big monolithic layers. I'll elaborate on this a bit.
Each Docker image is composed of a list of layers that are mounted on top of each other. This is a big advantage because layers can be reused between different images leading to less disk space usage, faster deployments, and faster builds when using Docker's internal build system. Building Docker images as a single big layer would waste these advantages.
I think the proper way to add Docker support to SUSE Studio would be to build the appliances using Docker's internal build system rather than KIWI. All Docker images built using SUSE Studio should be based on the same base images (one per template offered) and be composed of the set of layers produced by Docker's build system. That would bring the best of SUSE Studio and Docker together. As you can imagine this would require quite a lot of work inside SUSE Studio.
In your opinion, what are the most awesome things being done with Docker right now?
It is surely exciting to see how Docker is being used by Google inside of the Google App Engine PaaS or on big production environments like at Spotify. With the recent acquisition of Fig and Orchard by Docker I also expect to see even more awesome orchestration tools for Docker.
If there was one thing you could change about Docker, what would it be?
In the early days of Docker, I would have said the disk back-end needed to be changed, because Docker images worked only with the AUFS filesystem. That proved to be difficult to maintain (it is not part of the official Linux kernel) and not reliable as the traditional Linux file systems (no offense intended to the developer of AUFS, he is a really nice guy who always helps us). Fortunately, before release 1.0 Docker gained a modular back end system which allows the users to choose their favorite storage driver. Right now I don't have any particular complaints.