准备工作
首先说一下安装的环境,我是用的阿里云的服务器,操作系统为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发现问题并没有解决,原因是组设置并未生效,执行如下命令即可:
安装后的配置
设置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)