docker info | grep "Registry Mirrors"没有显示镜像加速器。同时,在系统中同时存在Rootful Docker(以root权限运行的标准Docker)和Rootless Docker(以非root用户运行的Docker,通过dockerd-rootless-setuptool.sh安装)。

运行ps aux | grep dockerd | grep -v grep会发现有多个dockerd进程,其中一个以root身份运行,另一个以非root用户通过rootlesskit运行。docker CLI默认会优先连接用户Home目录下的Rootless Docker配置。

还有其他rootlesskit相关的进程
以及在文件夹下~/.docker/config.json显示"currentContext": “rootless”。

  • 错误原因分析:

尽管我们想配置Rootful Docker(它读取/etc/docker/daemon.json),但Docker CLI由于~/.docker/config.json的配置和DOCKER_HOST环境变量的存在,一直在尝试连接到Rootless Docker。Rootless Docker的配置在~/.config/docker/daemon.json,而不是/etc/docker/daemon.json。

  • 解决方法:

我们需要明确使用Rootful Docker(这也是我们一开始安装daemon.json的目的),并确保docker CLI连接到它。

清除DOCKER_HOST环境变量:
在当前终端中执行unset DOCKER_HOST。更重要的是,检查你的shell配置文件(如/.bashrc、/.zshrc或~/.profile),找到并删除或注释掉类似export DOCKER_HOST="…"的行。

移除或重命名Rootless Docker的CLI配置:

rm -rf ~/.docker # 或者 mv ~/.docker ~/.docker.backup
这将强制docker CLI恢复默认行为,连接到/var/run/docker.sock。

重启Docker服务(Rootful):

sudo systemctl stop docker.socket # 确保socket也停止
sudo systemctl stop docker.service
sudo systemctl daemon-reload
sudo systemctl start docker.service

在新的终端中验证镜像加速器:
打开一个全新的终端窗口,运行:
docker info | grep "Registry Mirrors" -A 1
这时,Registry Mirrors应该能正确显示了!这证明CLI现在连接的是Rootful Docker,并且配置已生效。

修改docker镜像源的教程:https://cloud.tencent.com/developer/article/2516747?policyId=1003
此教程配置的镜像源可用

Logo

腾讯云面向开发者汇聚海量精品云计算使用和开发经验,营造开放的云计算技术生态圈。

更多推荐