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
Ensure you have command line access to a Linux server running a supported Linux distribution. If not, follow the Getting Started and Setting Up and Securing a Compute Instance guides to create a new Linode.
Note
This guide is written for a non-root user. Commands that require elevated privileges are prefixed withsudo
. If you’re not familiar with thesudo
command, 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, theyum
command 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 installdnf-plugins-core
when using DNF.sudo yum install yum-utils
Add the docker repository, using
yum-config-manager
. This automatically maps to thednf config-manager
command 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:
https://download.docker.com/linux/centos/docker-ce.repo
- Fedora 32 and later:
https://download.docker.com/linux/fedora/docker-ce.repo
- 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
By default, 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 Setting Up and Securing a Compute Instance 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
docker
commands withoutsudo
by 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 sudo
.
There are two possible fixes:
Remove the
.docker
directory from their home directory. Docker will automatically recreate it, but any custom settings will be lost.Change the permissions on the
.docker
directory 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 .
Listing Images
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.
docker images
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
Listing 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 hello-world
container.
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]
More Information
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