准备工作

首先说一下安装的环境,我是用的阿里云的服务器,操作系统为centOS,版本是7.9.2009,系统内核版本是3.10.0-957.21.3.el7.x86_64

然后卸载原先已安装的docker相关软件包,如果当前机器从来没安装过docker可以省略这一步。

1
2
3
4
5
6
7
8
$ sudo yum remove docker \
                  docker-client \
                  docker-client-latest \
                  docker-common \
                  docker-latest \
                  docker-latest-logrotate \
                  docker-logrotate \
                  docker-engine

现在docker引擎已经改名叫做docker-ce了,如果尝试使用sudo yum install docker-ce会发现找不到此包,因为默认的软件源里没有docker-ce这个包。

此时可以先安装yum-utils:

1
sudo yum install yum-utils

yum-utils中包含一个实用工具yum-config-manager,使用该工具可以很方便的新增yum的软件仓库:

1
2
# 将docker官方的软件仓库加进来
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

安装并启动docker

使用如下命令安装:

1
sudo yum install docker-ce docker-ce-cli containerd.io

启动docker:

1
sudo systemctl start docker

解决“权限不足”问题

此时执行docker ps查看容器,会报错:

1
2
3
4
5
6
[hongmao@aliyun ~]$ docker ps
Got permission denied while trying to connect to the Docker daemon socket at unix:///var/run/docker.sock: Get "http://%2Fvar%2Frun%2Fdocker.sock/v1.24/containers/json": dial unix /var/run/docker.sock: connect: permission denied

# 使用sudo便可以正常执行docker命令
[hongmao@aliyun ~]$ sudo docker ps
CONTAINER ID   IMAGE     COMMAND   CREATED   STATUS    PORTS     NAMES

造成这种现象的原因是:Docker守护进程绑定到Unix socket而不是TCP端口。默认情况下,Unix socket由root用户拥有,其他用户只能使用sudo访问。而Docker守护进程始终是以root用户身份运行。

如果不想每次执行命令前都使用sudo,则可以创建一个名为docker的组,然后将你当前用户(非root用户)加入该组。然后,当Docker守护进程启动时会创建一个docker组内成员可访问的Unix socket。

1
2
3
4
5
6
7
8
9
# 首先检查下当前是否已经有docker组
[hongmao@aliyun ~]$ cat /etc/group | grep docker
dockerroot❌994:
docker❌993:
# 可以发现,当前已经有名为docker的组了,则直接将非root用户放入该组即可
sudo usermod -aG docker hongmao

# 如果没有docker组,可以使用如下命令新建组
sudo groupadd docker

此时再次执行docker ps发现问题并没有解决,原因是组设置并未生效,执行如下命令即可:

1
newgrp docker

安装后的配置

设置docker守护进程为开启自动启动

首先,上述仅本次启动了docker,在服务器重启后docker并不会自动启动,可以使用如下命令设置docker为开启启动:

1
2
sudo systemctl enable docker.service
sudo systemctl enable containerd.service

设置阿里云镜像加速器

编辑或新建docker的默认配置文件:/etc/docker/daemon.json

1
2
3
4
5
6
sudo vim /etc/docker/daemon.json

# 在daemon.json文件中写入如下内容:
{
    "registry-mirrors": ["https://你自己的加速器地址"]
}

此时下载速度就很快了。

参考文档:

Install Docker Engine on CentOS | Docker Documentation

Post-installation steps for Linux | Docker Documentation

容器镜像服务 (aliyun.com)