How to Install Docker on CentOS
Docker is not available in CentOS repositories. Here's a step-by-step tutorial that will help you install Docker on CentOS Linux.
Installing Docker on Ubuntu is simple because Ubuntu provides Docker in its repositories. However, Docker is not available in CentOS's default repositories.
Fret not, there are three ways you can install docker on a CentOS Linux system.
- Using docker's repository
- Downloading the RPM
- Using helper scripts
Here, I'll walk you through the installation process of Docker CE using docker's RPM repository.
Docker CE stands for Docker Community Edition. This is the free and open source version of Docker. There is Docker EE (Enterprise Edition) with paid support. Most of the world uses Docker CE and it is often considered synonymous to Docker.
Installing Docker on CentOS
Before going any further, make sure you have the system updated. You can update the CentOS using:
sudo dnf update
Step 1: Add the official repository
Add docker's official repository using the following command
sudo dnf config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
You should also update the package cache after adding a new repository:
sudo dnf update
Step 2: Install Docker CE
The trouble with using a custom repository is that it may have dependency issue if you try installing the latest version of docker-ce.
For example, when I check the available versions of docker-ce with this command:
dnf list docker-ce --showduplicates | sort -r
I got docker-ce-3:19.03.9-3.el7 as the latest version. But the problem in installing the latest version is that it depends on containerd.io version >=1.2.2-3. Now, this version of containerd.io is not available in CentOS 8.
To avoid this dependency cycle and battling them manually, you can use the --nobest
option of the dnf command.
It will check the latest version of docker-ce but when it finds the dependency issue, it checks the next available version of docker-ce. Basically, it helps you automatically install the most suitable package version with all the dependencies satisfied.
To install docker in CentOS without getting a migraine, try this command and see the magic unfold on your terminal screen:
sudo dnf install docker-ce --nobest
You'll be prompted to import a GPG key, make sure the key matches to 060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35
before entering 'y'.
containerd.io is a daemon for managing containers. Docker is just one form of Linux containers. To make the various types of container images portable, Open Container Initiative has defined some standards. containerd is used for managing the container images conforming to OCI standard.
Setting up docker on CentOS
Alright! You have docker installed but it's not yet ready to be used yet. You'll have to do some basic configurations before it can be used smoothly.
Run docker without sudo
You can run docker without any sudo privileges by adding your user to the docker
group.
The docker group should already exist. Check that using the following command:
awk -F: '/docker/ {print $1}' /etc/group
If this outputs nothing, create the docker group using groupadd command like this:
sudo groupadd docker
Now add your user to the docker
group using the usermod command:
$ sudo usermod -aG docker user_name
Change the user_name in the above command with the intended user name.
Now log out and log back in for the group change to take effect.
Start docker daemon
Docker is installed. Your user has been added to the docker
group. But that's not enough to run docker yet.
Before you can run any container, the docker daemon needs to be running. The docker daemon is the program that manages all the containers, volumes, networks etc. In other words, the daemon does all the heavy lifting.
Start the docker daemon using:
sudo systemctl start docker
You can also enable docker daemon to start automatically at boot time:
sudo systemctl enable --now docker
Verify docker installation by running a sample container
Everything is done. It's time to test whether the installation was successful or not by running a docker container.
To verify, you can run the clichΓ© hello-world docker container. It is a tiny docker image and perfect for quickly testing a docker installation.
docker run hello-world
If everything is fine, you should see an output like this:
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
0e03bdcc26d7: Pull complete
Digest: sha256:d58e752213a51785838f9eed2b7a498ffa1cb3aa7f946dda11af39286c3db9a9
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
Here's what the command is doing behind the hood:
- The docker client, i.e. the command line tool that you just used, contacted the docker daemon.
- The daemon looked for hello-world docker image in the local system. Since it doesn't find the image, it pulls it from Docker Hub.
- The engine creates the container with all the options you provided through the client's command line options.
This hello-world image is used just for testing a docker installation. If you want a more useful container, you can try running Nginx server in a container like this:
docker run --rm --name nginx -p 56788:80 -d nginx:latest
Once the command is done running, open up a browser and go to http://your_ip_address:56788. I hope you know how to know your IP address in Linux.
You should see nginx server running. You can stop the container now.
docker stop nginx
I hope this tutorial helped you in installing docker on CentOS. Do subscribe for more Docker tutorials and DevOps tips.