Docker may be considering switching from Ubuntu to Alpine Linux as the basis for building official Docker images. The change would give Docker a lighter-weight Linux distribution, but at the expense of a package manager.
You can create Docker images for any Linux-based operating system, of course. But Docker’s official images support only one full-blown Linux distribution, and that’s Ubuntu. (Official images are also available for other types of environments, but none of those is a complete Linux distribution.)
That may be changing. A week ago, a poster in an online forum who purported to be a Docker employee said that “we have hired Natanael Copa, the awesome creator of Alpine Linux and are in the process of switching the Docker official image library from ubuntu to Alpine.”
As Linux distributions go, Alpine and Ubuntu are worlds apart. Alpine is a minimalist operating system that includes little more than the Linux kernel and a very basic set of utilities. In fact, it’s so minimal that it began as an only slightly heavier version of LEAF, a modern embedded Linux distribution designed to be small enough to fit onto a floppy disk.
(Side note: Distributing LEAF on floppy disks was not the point — the developers have a sufficient grasp on reality to realize that no one has floppy drives anymore — but by keeping the OS image that small, they hope to make LEAF ideal for embedded environments with very limited storage.)
Ubuntu, in contrast, is a full-featured Linux system. It’s available in several different flavors, each intended for different types of environments (desktops, servers, cloud), but all of the Ubuntu images ship with a large stack of applications. They also provide a package manager, apt-get, which makes it easy to install tens of thousands of additional applications.
So far, Docker has yet to make an official statement about switching to Alpine for its official images. But the motives seem clear enough. Presumably, Docker wants an OS environment with a lighter footprint. Rather than shipping an Ubuntu image — which, even with the customizations that Docker imposes, weighs in at around 188 megabytes and comes with a lot more software than Docker containers require to run — Docker can deploy a much smaller one based on Alpine.
Alpine’s tight focus on security could also be a factor. The distribution ships with several tools and configuration settings that are designed to make it especially resistant against attacks at different layers of the software stack. Since security remains a sticking point for enterprise container adoption, a change to Alpine could help Docker reach more users.
Last but not least, Canonical, the company behind Ubuntu, has its own container hypervisor, LXD. LXD and Docker are not exactly the same thing, and you can run Docker containers with LXD. But LXD’s existence is a sign that Canonical seems to have its own plan for containers within the Ubuntu ecosystem. For that reason, it would make sense for Docker to switch to Alpine, which is not bound to any big company that could potentially become a competitor.
On the other hand, a change may not sit well with everyone. One issue is that Alpine lacks a package manager. Without that, it’s harder to customize the system. (Of course, if you’re just downloading the official Docker image, it’s probably because you didn’t want to be bothered customizing your system in the first place — so this may not matter much in practice.)
Alpine is also much less familiar to most people than Ubuntu, which has been a widely used Linux distribution for more than a decade. People — even developers — tend not to be fans of change, at least at the outset.
For now, absent the announcement of official plans from Docker, all of the above is hypothetical. Still, the possible change raises some interesting points about which environment suits Docker best, and how the OS it chooses for official images impacts the business strategy of Docker the company.