关于文章


今天在对服务器进行维护的时候,发现Docker一些有意思的Bug,我分享出来一些,大家如果遇到相同的Bug可以参考本文章。

全局配置文件有误,请检查Expecting value: line 1 column 1 (Char 0)


在2024/06/06,国内的镜像源基本都关闭了缓存服务,所以国内的ECS想要使用Docker拉取镜像就需要配置全局加速,我在配置毫秒镜像加速的时候就遇到这个问题。

其实这个问题很好解决,这是因为在配置Docker的时候daemon.json这个文件不存在或者该文件内是空文件。

  • 解决方法:

打开daemon.json文件

vim /etc/docker/daemon.json

在该文件内添加全局加速配置

{
  "registry-mirrors": [
    "这里填写加速站"
  ],
  "log-opts": {
    "max-size": "100m",
    "max-file": "5"
  }
}

client version 1.35 is too old. Minimum supported API version is 1.44, please upgrade your client to a newer version


这个错误的核心原因是:Docker 客户端使用的 API 版本(1.35)低于 Docker 守护进程(daemon)要求的最低版本(1.44),导致两者不兼容,无法正常通信。

这个问题是使用了错误的Docker守护进程,为了确保兼容性、安全性,建议直接将Docker和Docker守护进程都升级至最新版本。

  • 解决方法(以 Debian11 举例):

卸载Docker

sudo apt-get remove docker docker-engine docker.io containerd runc

添加Docker官方GPG密钥

curl -fsSL https://download.docker.com/linux/debian/gpg | sudo gpg --dearmor -o /usr/share/keyrings/docker-archive-keyring.gpg

设置Docker仓库

echo "deb [arch=$(dpkg --print-architecture) signed-by=/usr/share/keyrings/docker-archive-keyring.gpg] https://download.docker.com/linux/debian $(lsb_release -cs) stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null

安装最新版Docker

sudo apt-get update
sudo apt-get install docker-ce docker-ce-cli containerd.io