Linux Docker源

配置毫秒镜像的源

快速配置

bash <(curl -sSL https://n3.ink/helper) 

传统配置(不推荐)

sudo tee /etc/docker/daemon.json > /dev/null <<'EOF'
{
  "registry-mirrors": [
    "https://docker.1ms.run"
  ],
  "dns": [
    "114.114.114.114",
    "114.114.115.115",

    "119.29.29.29",
    "119.28.28.28",
    "2402:4e00::",
    "2402:4e00:1::",

    "223.5.5.5",
    "223.6.6.6",
    "2400:3200::1",
    "2400:3200:baba::1",

    "52.80.66.66",
    "117.50.22.22",
    "2400:7fc0:849e:200::4",
    "2404:c2c0:85d8:901::4",

    "101.226.4.6",
    "218.30.118.6",
    "123.125.81.6",
    "140.207.198.6",

    "1.2.4.8",
    "210.2.4.8",

    "240c::6666",
    "240c::6644",

    "8.8.8.8",
    "8.8.4.4",
    "2001:4860:4860::8888",
    "2001:4860:4860::8844"
  ]
}
EOF

sudo systemctl daemon-reload
sudo systemctl restart docker

镜像源与登录鉴权的关系

在 /etc/docker/daemon.json 中配置 registry-mirrors,只是为 Docker Hub 增加一个优先使用的拉取端点,并不会把 Docker 的默认仓库从 docker.io 替换成毫秒镜像。

例如执行:

docker pull nginx

Docker 会按下面的顺序处理:

  1. Docker CLI 将镜像名补全为 docker.io/library/nginx:latest。
  2. CLI 根据镜像名中的仓库地址查找登录凭据,因此查询的是 Docker Hub(docker.io)凭据。
  3. CLI 将镜像名和对应的鉴权信息交给 Docker Daemon。
  4. Docker Daemon 再根据 registry-mirrors 配置,优先通过毫秒镜像拉取;镜像源不可用时,可能继续尝试 Docker Hub。

因此,鉴权身份由镜像名称中的仓库地址决定,而不是由 Docker Daemon 最终选择的下载端点决定。

拉取命令 镜像的逻辑仓库 Docker CLI 查找的凭据
docker pull nginx docker.io Docker Hub 凭据
docker pull bitnami/mongodb:latest docker.io Docker Hub 凭据
docker pull docker.1ms.run/library/nginx:latest docker.1ms.run 毫秒镜像凭据
docker pull docker.1ms.run/bitnami/mongodb:latest docker.1ms.run 毫秒镜像凭据

如何选择登录方式

  • 希望使用不带前缀的命令,例如 docker pull nginx,付费用户可以使用一键登录,也可以创建并配置专属域名;两种方式均可保留无前缀拉取命令。
  • 使用原版 docker login docker.1ms.run 登录时,请在镜像名称前添加 docker.1ms.run/。
  • docker login 不指定服务器地址时,默认登录的是 Docker Hub,而不是毫秒镜像。
  • 不要把用户名、密码或密钥直接写进 registry-mirrors URL;这不是 Docker 为镜像源设计的凭据配置方式,也容易泄露密钥。

Docker 官方参考:Docker Hub 镜像缓存 · `docker login` 命令