Alpine Linux is tiny, fast, and a little bit magical. It is popular in servers, containers, and Docker images because it stays lean. But sometimes you need one simple tool to talk to the web. That tool is curl.
TLDR: To install curl on Alpine Linux, run apk update and then apk add curl. After that, check it with curl --version. If you are inside a Docker container, you may need to run the command as root. Curl helps you download files, test APIs, and send web requests from the terminal.
Table of Contents
What Is Curl?
curl is a command line tool. It sends and receives data using URLs. That sounds fancy. But it is simple.
You can use curl to open a web page from the terminal. You can download a file. You can test if an API is alive. You can check headers. You can even send data to a server.
Think of curl as a tiny web browser with no buttons and no pictures. It does not care about pretty pages. It cares about data. It is fast. It is useful. It is everywhere.
For example, this command asks a website for data:
curl https://example.com
If the site answers, curl shows the reply in your terminal. Nice and neat.
Why Alpine Linux Does Not Always Include Curl
Alpine Linux is built to be small. Very small. It avoids extra packages unless you ask for them. This is one reason people love it.
A basic Alpine image may not include curl. That is normal. It is not broken. It is just being tidy.
Alpine uses a package manager called apk. This is not an Android app file. In Alpine land, apk means Alpine Package Keeper. It installs, removes, and updates software.
So, to install curl, you use apk. Easy.
Before You Start
Make sure you have access to an Alpine Linux system. This could be:
- An Alpine Linux server.
- A local Alpine virtual machine.
- A Docker container based on Alpine.
- A minimal cloud image.
You also need a working internet connection. Alpine must reach its package repositories. If it cannot reach them, it cannot download curl.
You may also need root access. Many package commands need root permissions. If you are already root, great. If not, you may need sudo. Some Alpine systems do not include sudo by default. That is also normal.
Step 1: Open the Terminal
First, open your terminal. If you are on a server, connect with SSH. If you are in Docker, start a shell.
For Docker, you might use:
docker run -it alpine sh
This starts a fresh Alpine container. The sh part opens a shell. Alpine often uses sh instead of bash. Bash may not be installed. Do not panic. Shell is shell. Mostly.
If you are already inside Alpine, you should see a prompt. It may look simple. That is Alpine saying, “I travel light.”
Step 2: Update the Package Index
Before installing curl, update the package index. This helps Alpine know what packages are available.
Run this command:
apk update
This command downloads the latest package lists. It does not upgrade all your software. It only refreshes the list.
If the command works, you will see repository lines and package counts. If you see errors, check your internet connection. Also check your DNS settings. Tiny systems can still have big network moods.
Step 3: Install Curl
Now comes the fun part. Install curl with this command:
apk add curl
Alpine will download curl and any needed libraries. It may show the package size. It may show dependencies. Then it installs everything.
That is it. Curl is now on your Alpine system.
If you are not root, try:
sudo apk add curl
If sudo is missing, switch to root if possible. You can use:
su -
Then run the install command again.
Step 4: Check That Curl Works
Always verify the install. It takes two seconds. It saves headaches.
Run:
curl --version
You should see output with the curl version. You may also see supported protocols. These can include HTTP, HTTPS, FTP, and more.
Example output may look like this:
curl 8.x.x
Protocols: dict file ftp ftps http https
Features: IPv6 SSL libz
If you see a version number, you win. Give yourself a tiny terminal high five.
Step 5: Try a Simple Curl Command
Now let us test curl for real.
Run:
curl https://example.com
You should see HTML text appear. It may look messy. That is fine. Curl shows the raw response. It does not decorate it.
If you want only the response headers, use:
curl -I https://example.com
The -I option asks for headers only. This is useful when checking if a site is alive. It can show status codes like 200 OK, 301 Moved Permanently, or 404 Not Found.
Installing Curl in an Alpine Dockerfile
Many people use Alpine inside Docker. In that case, you may want curl installed during the image build.
Here is a simple Dockerfile:
FROM alpine:latest
RUN apk update && apk add curl
CMD ["sh"]
This works. But we can make it cleaner.
In Docker images, it is common to use --no-cache. This avoids storing the package index. It keeps the image smaller.
Use this instead:
FROM alpine:latest
RUN apk add --no-cache curl
CMD ["sh"]
This is the favorite Docker style. It is short. It is clean. It is very Alpine.
Build it like this:
docker build -t alpine-curl .
Run it like this:
docker run -it alpine-curl
Then test curl:
curl --version
If it works, your image is ready.
Image not found in postmetaUsing Curl After Installation
Curl can do many handy things. Here are a few simple examples.
Download a File
To download a file and keep its name, use -O:
curl -O https://example.com/file.txt
To choose your own file name, use -o:
curl -o myfile.txt https://example.com/file.txt
Big O keeps the remote name. Small o uses your name. That is the tiny curl alphabet dance.
Follow Redirects
Some links redirect to another place. Curl does not always follow redirects by default.
Use -L:
curl -L https://example.com
This tells curl, “Follow the trail.”
Send JSON Data
Curl is great for APIs. You can send JSON like this:
curl -X POST https://api.example.com/data \
-H "Content-Type: application/json" \
-d '{"name":"Alpine","tool":"curl"}'
This sends a POST request. It includes a header. It sends a tiny JSON body. APIs love this stuff.
Common Problems and Fixes
Sometimes things go sideways. That is normal. Computers like drama.
Problem: apk: not found
If you see this, you may not be on Alpine Linux. Other Linux systems use other package managers.
- Debian and Ubuntu use
apt. - Fedora uses
dnf. - Arch uses
pacman. - Alpine uses
apk.
Check your system with:
cat /etc/os-release
Problem: Permission Denied
You are probably not root. Use root access. Or use sudo if it exists.
sudo apk add curl
If sudo is not installed, log in as root or use su.
Problem: Temporary Error
This may be a network issue. Test DNS:
ping google.com
If DNS fails, try pinging an IP address:
ping 8.8.8.8
If the IP works but the name fails, DNS is the problem.
Problem: SSL Certificate Error
Curl uses certificates for HTTPS. If certificates are missing, install them:
apk add --no-cache ca-certificates
Then try curl again.
In many cases, installing curl also brings what it needs. But minimal images can be picky.
Should You Use Wget Instead?
Alpine often includes wget through BusyBox. It can download files. It is useful. It is small.
But curl is stronger for APIs. It has many options. It handles headers well. It supports many request types. If you work with web services, curl is usually the better tool.
Use wget for simple downloads. Use curl for web requests, APIs, headers, and testing. Or use both. No one will call the terminal police.
How to Remove Curl
If you installed curl and no longer need it, you can remove it.
apk del curl
This removes the curl package. Alpine may keep packages that are still needed by other software. That is good. It avoids breaking things.
Inside Docker, it is often better to avoid installing extra tools in final images. You can install curl only in a build stage. Or use it for debugging, then remove it.
Best Practices
Here are simple tips for happy Alpine curl use:
- Use
apk add --no-cache curlin Docker. It keeps images smaller. - Check the version. Use
curl --version. - Install certificates if HTTPS fails. Use
ca-certificates. - Keep commands simple. Add options only when needed.
- Do not ignore errors. Curl messages often tell you the real problem.
Quick Command Cheat Sheet
Here is your tiny curl command snack box:
apk updateupdates the package list.apk add curlinstalls curl.apk add --no-cache curlinstalls curl without cached index files.curl --versionchecks the install.curl https://example.comfetches a page.curl -I https://example.comshows headers.curl -L https://example.comfollows redirects.apk del curlremoves curl.
Final Thoughts
Installing curl on Alpine Linux is quick. It only takes one or two commands. Use apk update if you are working on a normal system. Use apk add --no-cache curl if you are building a Docker image.
Curl may look small. But it is powerful. It helps you test websites, call APIs, download files, and debug network problems. It is the little terminal tool that says, “Give me the web, but make it plain text.”
So go ahead. Install curl. Run a request. Watch the data roll in. Alpine stays tiny, and you get a very useful tool in your shell toolbox.


