With its container-friendly design, the Alpine Docker Official Image (DOI) helps developers build and deploy lightweight, cross-platform applications. It’s based on Alpine Linux which debuted in 2005, making it one of today’s newest major Linux distros.
While some developers express security concerns when using relatively newer images, Alpine has earned a solid reputation. Developers favor Alpine for the following reasons:
- It has a smaller footprint, and therefore a smaller attack surface (even evading 2014’s ShellShock Bash exploit!).
- It takes up less disk space.
- It offers a strong base for customization.
- It’s built with simplicity in mind.
In fact, the Alpine DOI is one of our most popular container images on Docker Hub. To help you get started, we’ll discuss this image in greater detail and how to use the Alpine Docker Official Image with your next project. Plus, we’ll explore using Alpine to grab the slimmest image possible. Let’s dive in!
In this tutorial:
- What is the Alpine Docker Official Image?
- How to run Alpine in Docker
- Get up and running with Alpine today
What is the Alpine Docker Official Image?
The Alpine DOI is a building block for Alpine Linux Docker containers. It’s an executable software package that tells Docker and your application how to behave. The image includes source code, libraries, tools, and other core dependencies that your application needs. These components help Alpine Linux function while enabling developer-centric features.
The Alpine Docker Official Image differs from other Linux-based images in a few ways. First, Alpine is based on the musl libc implementation of the C standard library — and uses BusyBox instead of GNU coreutils. While GNU packages many Linux-friendly programs together, BusyBox bundles a smaller number of core functions within one executable.
As a result, Alpine appeals to developers who don’t need uncompromising compatibility or functionality from their image. Our Alpine DOI is also user-friendly and straightforward since there are fewer moving parts.
Alpine Linux performs well on resource-limited devices, which is fitting for developing simple applications or spinning up servers. Your containers will consume less RAM and less storage space.
The Alpine Docker Official Image also offers the following features:
- The robust
- A rapid, consistent development-and-release cycle vs. other Linux distributions
- Multiple supported tags and architectures, like
Multi-arch support lets you run Alpine on desktops, mobile devices, rack-mounted servers, Raspberry Pis, and even newer M-series Macs. Overall, Alpine pairs well with a wide variety of embedded systems.
These are only some of the advantages to using the Alpine DOI. Next, we’ll cover how to harness the image for your application.
When to use Alpine
You may be interested in using Alpine, but find yourself asking, “When should I use it?” Containerized Alpine shines in some key areas:
- Creating servers
- Router-based networking
- Development/testing environments
While there are some other uses for Alpine, most projects will fall under these two categories. Overall, our Alpine container image excels in situations where space savings and security are critical.
How to run Alpine in Docker
Before getting started, download Docker Desktop and then install it. Docker Desktop is built upon Docker Engine and bundles together the Docker CLI, Docker Compose, and other core components. Launching Docker Desktop also lets you use Docker CLI commands (which we’ll get into later). Finally, the included Docker Dashboard will help you visually manage your images and containers.
After completing these steps, you’re ready to Dockerize Alpine!
Note: For Linux users, Docker will still work perfectly fine if you have it installed externally on a server, or through your distro’s package manager. However, Docker Desktop for Linux does save time and effort by bundling all necessary components together — while aiding productivity through its user-friendly GUI.
Use a quick pull command
You’ll have to first pull the Alpine Docker Official Image before using it for your project. The fastest method involves running
docker pull alpine from your terminal. This grabs the
alpine:latest image (the most current available version) from Docker Hub and downloads it locally on your machine:
Your terminal output should show when your pull is complete — and which
alpine version you’ve downloaded. You can also confirm this within Docker Desktop. Navigate to the Images tab from the left sidebar. And a list of downloaded images will populate on the right. You’ll see your
alpine image, tag, and its minuscule (yes, you saw that right) 5.29 MB size:
That’s a quick introduction to using the Alpine Official Image alongside Docker Desktop. But it’s important to remember that every Alpine DOI version originates from a
Dockerfile. This plain-text file contains instructions that tell Docker how to build an image layer by layer. Check out the Alpine Linux GitHub repository for more
Next up, we’ll cover the significance of these Dockerfiles to Alpine Linux, some CLI-based workflows, and other key information.
Build your Dockerfile
Because Alpine is a standard base for container images, we recommend building on top of it within a
Dockerfile. Specify your preferred
alpine image tag and add instructions to create this file. Our example takes
alpine:3.14 and runs an executable
mysql client with it:
RUN apk add --no-cache mysql-client
In this case, we’re starting from a slim base image and adding our
mysql-client using Alpine’s standard package manager. Overall, this lets us run commands against our MySQL database from within our application.
This is just one of the many ways to get your Alpine DOI up and running. In particular, Alpine is well-suited to server builds. To see this in action, check out Kathleen Juell’s presentation on serving static content with Docker Compose, Next.js, and NGINX. Navigate to timestamp 7:07 within the embedded video.
The Alpine Official Image has a close relationship with other technologies (something that other images lack). Many of our Docker Official Images support
-alpine tags. For instance, our earlier example of serving static content leverages the
node:16-alpine image as a
This relationship makes Alpine and multi-stage builds an ideal pairing. Since the primary goal of a multi-stage build is to reduce your final image size, we recommend starting with one of the slimmest Docker Official Images.
Grabbing the slimmest possible image
-alpine version of a given image typically yields the slimmest result. You can do this using our earlier
docker pull [image] command. Or you can create a
Dockerfile and specify this image version — while leaving room for customization with added instructions.
In either case, here are some results using a few of our most popular images. You can see how image sizes change with these tags:
image:[version number]-alpine size
We’ve used the
:latest tag since this is the default image tag Docker grabs from Docker Hub. As shown above with Python, pulling the
-alpine image version reduces its footprint by nearly 95%!
From here, the build process (when working from a
Dockerfile) becomes much faster. Applications based on slimmer images spin up quicker. You’ll also notice that
docker pull and various
docker run commands execute swifter with
However, remember that you’ll likely have to use this tag with a specified version number for your parent image. Running
docker pull python-alpine or
docker pull python:latest-alpine won’t work. Docker will alert you that the image isn’t found, the repo doesn’t exist, the command is invalid, or login information is required. This applies to any image.
Get up and running with Alpine today
The Alpine Docker Official Image shines thanks to its simplicity and small size. It’s a fantastic base image — perhaps the most popular amongst Docker users — and offers plenty of room for customization. Alpine is arguably the most user-friendly, containerized Linux distro. We’ve tackled how to use the Alpine Official Image, and showed you how to get the most from it.
Want to use Alpine for your next application or server? Pull the Alpine Official Image today to jumpstart your build process. You can also learn more about supported tags on Docker Hub.