1. System Requirements
Docker CE supports the 64-bit version CentOS 7 and requires a kernel version no lower than 3.10. CentOS 7 meets the minimum kernel requirements, but due to the relatively low version of the kernel, some functions (such as overlay2
storage layer drivers) cannot be used, and some functions may not be stable.
2. Uninstall the old version
Older versions of Docker are called docker
or docker-engine
, uninstall older versions with:
$ sudo yum remove docker \
docker-common \
docker-selinux \
docker-engine
3. Install using yum source
Execute the following command to install dependencies:
$ sudo yum install -y yum-utils \
device-mapper-persistent-data \
lvm2
In view of domestic network problems, it is strongly recommended to use domestic sources. Please check the official sources in the comments.
Execute the following command to add the yum
software source:
$ sudo yum-config-manager \
--add-repo \
https://mirrors.ustc.edu.cn/docker-ce/linux/centos/docker-ce.repo
# 官方源
# $ sudo yum-config-manager \
# --add-repo \
# https://download.docker.com/linux/centos/docker-ce.repo
If you need the latest version of Docker CE use the following command:
$ sudo yum-config-manager --enable docker-ce-edge
If you need a test version of Docker CE use the following command:
$ sudo yum-config-manager --enable docker-ce-test
Install Docker CE
Update yum
the software source cache and install it docker-ce
.
$ sudo yum makecache fast
$ sudo yum install docker-ce
Automatic installation using a script
In the test or development environment, Docker officially provides a set of convenient installation scripts to simplify the installation process, which can be used on CentOS systems to install:
$ curl -fsSL get.docker.com -o get-docker.sh
$ sudo sh get-docker.sh --mirror Aliyun
After executing this command, the script will automatically prepare everything and install the Edge version of Docker CE on the system.
Start Docker CE
$ sudo systemctl enable docker
$ sudo systemctl start docker
Create a docker user group
By default, docker
commands use Unix sockets to communicate with the Docker engine. And only root
users and docker
groups of users can access the Docker engine's Unix socket. For security reasons, users are generally not used directly on Linux systems root
. Therefore, a better practice is to docker
add the user who needs to use it to the docker
user group.
Create a docker
group:
$ sudo groupadd docker
Add the current user to the docker
group:
$ sudo usermod -aG docker $USER
Log out of the current terminal and log in again to perform the following tests.
Test if Docker is installed correctly
$ docker run hello-world
Unable to find image 'hello-world:latest' locally
latest: Pulling from library/hello-world
ca4f61b1923c: Pull complete
Digest: sha256:be0cd392e45be79ffeffa6b05338b98ebb16c87b255f48e297ec7f98e123905c
Status: Downloaded newer image for hello-world:latest
Hello from Docker!
This message shows that your installation appears to be working correctly.
To generate this message, Docker took the following steps:
1. The Docker client contacted the Docker daemon.
2. The Docker daemon pulled the "hello-world" image from the Docker Hub.
(amd64)
3. The Docker daemon created a new container from that image which runs the
executable that produces the output you are currently reading.
4. The Docker daemon streamed that output to the Docker client, which sent it
to your terminal.
To try something more ambitious, you can run an Ubuntu container with:
$ docker run -it ubuntu bash
Share images, automate workflows, and more with a free Docker ID:
https://cloud.docker.com/
For more examples and ideas, visit:
https://docs.docker.com/engine/userguide/
If the above information can be output normally, the installation is successful.
Mirror acceleration
In view of domestic network problems, the subsequent pulling of Docker images is very slow. It is strongly recommended to configure domestic image acceleration after installing Docker .
add kernel parameters
With the default configuration, if you use Docker CE on CentOS, you see the following warnings:
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Please add kernel configuration parameters to enable these features.
$ sudo tee -a /etc/sysctl.conf <<-EOF
net.bridge.bridge-nf-call-ip6tables = 1
net.bridge.bridge-nf-call-iptables = 1
EOF
sysctl.conf
then reload
$ sudo sysctl -p