服务器上的 Docker 是 1.13 版本的有点老了,于是打算升级一下;
结果发现加入了 Docker 源之后使用 yum 安装报错了…,这里总结一下;
centos7中使用yum安装docker报错解决方法
安装Docker
首先卸载旧版本:
1 | sudo yum remove docker \ |
然后按照软件源:
1 | sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo |
查看可用版本:
1 | yum list docker-ce --showduplicates | sort -r |
至此步骤都是正常的;
当使用 yum 命令安装时:
1 | yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin |
报错:
1 | This system is not registered with an entitlement server. You can use subscription-manager to register. |
原因是 CentOS 7 中的链接解析已经被废弃了;
可以尝试替换:/etc/yum.repos.d/docker-ce.repo 文件中的 $releasever => 7 解决:
/etc/yum.repos.d/docker-ce.repo
1 | [docker-ce-stable] |
替换之后便可安装!
设置为开机启动:
1 | systemctl enable docker |
启动:
1 | systemctl start docker |
查看启动状态:
1 | systemctl status docker |
查看版本:
1 | docker version |
旧版本Docker兼容
有部分安装的docker版本太旧,对docker进行版本升级后,启动旧版本创建的容器时遇到这个错误:
1 | docker start 容器ID |
当从不兼容的版本升级docker并且升级后无法启动docker容器时会出现这种情况,原因是新旧版本的两个版本命令所在目录不同;
解决方法:
- 更改
/var/lib/docker/containers目录中的文件参数,把docker-runc替换为runc
可通过以下命令进行修复:
1 | grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g' |
注:
grep -rl:递归搜索目录和子目录,只列出含有匹配的文本行的文件名,而不显示具体的匹配内容;xargs:衔接执行之前得到的值;总体意思是把
/var/lib/docker/containers中含有docker-runc文件搜索出来;并把
docker-runc字符替换为runc;
替换完成后重启 Docker:
1 | systemctl restart docker |
附录
文章参考:
- https://stackoverflow.com/questions/60970697/docker-install-failing-in-linux-with-error-errno-14-https-error-404-not-foun
- https://www.dockerchina.cn/?id=126
- https://blog.51cto.com/dongweizhen/3606988