Installing and Using Docker on CentOS and Fedora
Traducciones al EspañolEstamos traduciendo nuestros guías y tutoriales al Español. Es posible que usted esté viendo una traducción generada automáticamente. Estamos trabajando con traductores profesionales para verificar las traducciones de nuestro sitio web. Este proyecto es un trabajo en curso.
Docker is a tool that enables you to create, deploy, and manage lightweight, stand-alone packages called containers. These containers have the necessary code, libraries, runtime, system settings, and dependencies needed to run an application.
This guide covers installing the Docker Engine on various Linux distributions using the YUM or DNF package manager, including CentOS and Fedora, as well as obtaining and running Docker images.
Before You Begin
NoteThis guide is written for a non-root user. Commands that require elevated privileges are prefixed with
sudo. If you’re not familiar with the
sudocommand, see the Users and Groups guide.
Review the following Docker guides to gain a better understanding of Docker, its benefits, and when to use it.
Installing Docker Engine
Docker Engine is the underlying containerization software used when deploying Docker containers. The following instructions will install Docker on CentOS and Fedora using the YUM package manager.
Supported distributions: CentOS 7, CentOS 8 (including other derivatives of RHEL 8 such as AlmaLinux and RockyLinux), and Fedora 32 (and later)
NoteWhile the YUM package manager has been replaced with DNF on CentOS 8 and Fedora, the
yumcommand is still present as a symlink to DNF. As such, these instructions still work as intended.
Ensure Docker is not currently installed. Output indicating that any of the packages aren’t found can be safely ignored.
sudo yum remove docker docker-client docker-client-latest docker-common docker-latest docker-latest-logrotate docker-logrotate docker-engine
Install the yum-utils package, which includes
yum-config-manager. This will automatically install
dnf-plugins-corewhen using DNF.
sudo yum install yum-utils
Add the docker repository, using
yum-config-manager. This automatically maps to the
dnf config-managercommand when using DNF. In the following command, replace
[url]with the url of the repository for your distribution:
sudo yum-config-manager --add-repo [url]
- RHEL/CentOS and derivatives:
- Fedora 32 and later:
- RHEL/CentOS and derivatives:
Install Docker Engine and other required packages:
sudo yum install docker-ce docker-ce-cli containerd.io
During this step, you may be prompted to accept the GPG key. The fingerprint should be
060A 61C5 1B55 8A7F 742B 77AA C52F EB6B 621E 9F35. Verify these details and enter y to accept.
Additional installation instructions for these distributions can be found within Docker’s documentation:
Starting and Testing Docker
After Docker Engine is installed, start Docker and verify everything is working by running a test image.
Ensure that the Docker server is running.
sudo systemctl start docker
Optionally configure Docker to start when the server boots up. This is recommended if you intend on running a production application within this Docker installation.
sudo systemctl enable docker sudo systemctl enable containerd
Verify Docker is correctly installed by running the “hello-world” image.
sudo docker run hello-world
If successful, Docker should download and run the hello-world image and output a success message. Among other text, the output should include a message similar to the following:
Hello from Docker! This message shows that your installation appears to be working correctly.
Managing Docker with a Non-Root User
sudo is required to run Docker commands, but a new group, called docker, was created during installation. When the Docker daemon starts, it opens a Unix socket for the docker group members.
Before continuing, make sure you have a limited user account that does not belong to the sudo group. If you haven’t created a limited user account yet, see the guides Securing Your Server or Linux Users and Groups for instructions.
Enter the command below to add a user to the docker group, replacing [user] with the name of your limited user account.
sudo usermod -aG docker [user]
Log in to the system as the limited user.
Verify the limited user can run
sudoby running the “hello-world” image once again.
docker run hello-world
The output should have a similar success message as the previous output.
CautionThe docker group grants similar privileges to those of the root user. Review the Docker Daemon Attack Surface guide within Docker’s documentation for more information about how that can affect system security. To run the Docker daemon without using root privileges, follow the instructions within Run the Docker daemon as a non-root user (Rootless mode).
Resolving Errors with Loading Config Files
If the user had run
sudo docker commands before joining the group, they might be presented with a failure loading the config file, like this:
WARNING: Error loading config file: /home/user/.docker/config.json - stat /home/user/.docker/config.json: permission denied
The issue is the .docker directory in their home directory (~/.docker) was created with permissions granted by
There are two possible fixes:
.dockerdirectory from their home directory. Docker will automatically recreate it, but any custom settings will be lost.
Change the permissions on the
.dockerdirectory using the commands:
sudo chown example_user:example_user /home/example_user/.docker -R sudo chmod g+rwx "/home/example_user/.docker" -R
Using Docker Images to Deploy Containers
Docker images are templates that include the instructions and specifications for creating a container. To use Docker, you first need to obtain an image or create your own by building a dockerfile. For more information, see An Introduction to Docker .
To list all of the images on your system, run the following command. This should output the hello-world image that was used in a previous step, as well as any additional images you may have already obtained.
Finding an Image
Images are stored on Docker registries, such as
Docker Hub (Docker’s official registry). You can browse for images on that website or use the following command to search through the Docker registry. In the following command, replace
[keyword] with the keywords you’d like to search for, such as nginx or apache.
docker search [keyword]
Obtaining an Image
Once you find an image, download it to your server. In the following command, replace
[image] with the name of the image you’d like to use.
docker pull [image]
For instance, to pull down the official nginx image, run:
docker pull nginx.
Running an Image
Next, create a container based on the image by using the
docker run command. Again, replace
[image] with the name of the image you’d like to use.
docker run [image]
If the image hasn’t been downloaded yet and is available in Docker’s registry, the image will automatically be pulled down to your server.
Managing Docker Containers
To list all active (and inactive) Docker containers running on your system, run the following command:
docker ps -a
The output should resemble the following. This sample output shows the
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 5039168328a5 hello-world "/hello" 2 hours ago Exited (0) 2 hours ago magical_varahamihira
Starting a Container
Start a Docker container with the following command, replacing
[ID] with the container ID corresponding with the container you wish to start:
docker start [ID]
Stopping a Container
Stop a Docker container with the following command, replacing
[ID] with the container ID corresponding with the container you wish to stop:
docker stop [ID]
Some images (such as the
hello-world image) automatically stop after they are run. However, many other containers continue running until explicitly commanded to stop, and you may want to run these containers in the background. For those cases, this command can come in handy.
Removing a Container
Remove a Docker container with the following command, replacing
[ID] with the container ID corresponding with the container you wish to remove:
docker rm [ID]
You may wish to consult the following resources for additional information on this topic. While these are provided in the hope that they will be useful, please note that we cannot vouch for the accuracy or timeliness of externally hosted materials.
This page was originally published on