【踩坑】Docker报错

前言

Docker报错

报错

  • Docker下载镜像时报错:ERROR: missing signature key

原因

  • 在CentOS中使用docker.io安装的docker

解决问题

  • 重新安装docker,改为使用docker-ce安装docker

重新安装docker不会删除已有的镜像和容器

卸载docker.io

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

安装docker-ce

1
2
3
4
sudo yum install -y yum-utils
sudo yum-config-manager --add-repo https://download.docker.com/linux/centos/docker-ce.repo
sudo yum install docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl restart docker

报错

  • Docker下载镜像时报错:ERROR: Get "https://registry-1.docker.io/v2/": net/http: TLS handshake timeout

原因

  • 无法连接安全的连接到docker远端仓库

解决问题

报错

  • Docker启动容器时报错:Error response from daemon: unknown or invalid runtime name: docker-runc

原因

  • docker.io升级到docker-ce之后找不到旧的运行时

解决问题

修改所有容器的运行时

  • 修改所有容器的运行时,从docker-runc改为runc
1
2
grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'
sudo systemctl restart docker

创建软链接

  • docker-runc指向runc
1
sudo ln -s /usr/bin/runc /usr/bin/docker-runc

完成

参考文献

CSDN——程序小白_大糊涂
Docker官方文档
CSDN——oops_wsy
Docker官方论坛——chaz6