卸载已安装docker

1
2
3
4
5
6
7
8
9
10
 yum remove docker-ce docker-ce-cli containerd.io

yum remove docker \
docker-client \
docker-client-latest \
docker-common \
docker-latest \
docker-latest-logrotate \
docker-logrotate \
docker-engine

安装阿里yum源

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
# 进入/etc/yum.repos.d目录
cd /etc/yum.repos.d

# 备份/etc/yum.repos.d目录下所有的配置文件
mkdir bak
mv CentOS-Linux-* bak

# 下载Centos8的镜像源
wget -O /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo
# 若CentOS未安装wget
curl -o /etc/yum.repos.d/CentOS-Base.repo https://mirrors.aliyun.com/repo/Centos-8.repo

# 清除所有yum缓存文件
yum -y clean all

# 建立缓存
yum -y makecache

# 查看yum仓库信息
yum repolist

安装需要的软件包

yum-utils提供了yum-config-manager,device-mapper存储驱动程序需要device-mapper-persistent-data和lvm2。

1
2
3
yum install -y yum-utils \
device-mapper-persistent-data \
lvm2

设置docker的yum源,比如阿里云源

1
2
3
yum-config-manager \
--add-repo \
http://mirrors.aliyun.com/docker-ce/linux/centos/docker-ce.repo

安装docker engine

1
2
3
4
# 查看可安装版本
yum list docker-ce --showduplicates | sort -r

yum install docker-ce-19.03.15-3.el8 docker-ce-cli-19.03.15-3.el8 containerd.io

安装安装docker时,runc包产生版本冲突

按照上面的截图 得知我们安装container.io时,会下载一个podman的包(软件),podman包依赖runc包,runc包要>=1.0.0-57 ,然后不知道是他下载了版本为1.0.0-65的包还是这个包已经被安装了,就是container.io会和runc版本为1.0.0-65的包冲突。所以首先要把runc 包删除了,然后再重新安装container.io这样就不会出错。

1
yum remove runc

设置Docker镜像加速器

k8s推荐docker的cgroup驱动使用systemd,说是会更稳定,所以这里我们还需要修改一下,同时这里更换docker的镜像源为中科大的镜像源。

1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
  # 确保目录名称存在,不存在的就建一个
mkdir -p /etc/docker

# 修改或创建文件内容
vi /etc/docker/daemon.json

{
"exec-opts": ["native.cgroupdriver=systemd"],
"log-driver": "json-file",
"log-opts": {
"max-size": "100m"
},
"storage-driver": "overlay2",
"storage-opts": [
"overlay2.override_kernel_check=true"
],
"registry-mirrors": ["https://gdpuhcjk.mirror.aliyuncs.com"]
}

mkdir -p /etc/systemd/system/docker.service.d
```

## 启动docker并设置开机启动

```
systemctl daemon-reload
systemctl enable docker
systemctl start docker