3

centos7中使用yum安装docker报错解决方法

 2 years ago
source link: https://jasonkayzk.github.io/2022/08/14/centos7%E4%B8%AD%E4%BD%BF%E7%94%A8yum%E5%AE%89%E8%A3%85docker%E6%8A%A5%E9%94%99%E8%A7%A3%E5%86%B3%E6%96%B9%E6%B3%95/
Go to the source link to view the article. You can view the picture content, updated content and better typesetting reading experience. If the link is broken, please click the button below to view the snapshot at that time.
neoserver,ios ssh client

服务器上的 Docker 是 1.13 版本的有点老了,于是打算升级一下;

结果发现加入了 Docker 源之后使用 yum 安装报错了…,这里总结一下;

centos7中使用yum安装docker报错解决方法

安装Docker

首先卸载旧版本:

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

然后按照软件源:

sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo

查看可用版本:

yum list docker-ce --showduplicates | sort -r

至此步骤都是正常的;

当使用 yum 命令安装时:

yum install docker-ce docker-ce-cli containerd.io docker-compose-plugin
This system is not registered with an entitlement server. You can use subscription-manager to register.
 https://yum.dockerproject.org/repo/main/centos/7/repodata/repomd.xml: [Errno 
14] HTTPS Error 404 - Not Found
Trying other mirror.
...
failure: repodata/repomd.xml from dockerrepo: [Errno 256] No more mirrors to try.
   https://yum.dockerproject.org/repo/main/centos/7/repodata/repomd.xml: [Errno 14] HTTPS Error 404 - Not Found

原因是 CentOS 7 中的链接解析已经被废弃了;

可以尝试替换:/etc/yum.repos.d/docker-ce.repo 文件中的 $releasever => 7 解决:

/etc/yum.repos.d/docker-ce.repo

[docker-ce-stable]
name=Docker CE Stable - $basearch
- baseurl=https://download.docker.com/linux/centos/$releasever/$basearch/stable
+ baseurl=https://download.docker.com/linux/centos/7/$basearch/stable
enabled=1
gpgcheck=1
gpgkey=https://download.docker.com/linux/centos/gpg

替换之后便可安装!

设置为开机启动:

systemctl enable docker
systemctl start docker

查看启动状态:

systemctl status docker

查看版本:

docker version

旧版本Docker兼容

有部分安装的docker版本太旧,对docker进行版本升级后,启动旧版本创建的容器时遇到这个错误:

docker start 容器ID
Error response from daemon: Unknown runtime specified docker-runc

当从不兼容的版本升级docker并且升级后无法启动docker容器时会出现这种情况,原因是新旧版本的两个版本命令所在目录不同;

解决方法:

  • 更改/var/lib/docker/containers目录中的文件参数,把docker-runc替换为runc

可通过以下命令进行修复:

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:

systemctl restart docker

附录

文章参考:


About Joyk


Aggregate valuable and interesting links.
Joyk means Joy of geeK