关于docker无法访问仓库的镜像代理问题

解决的办法有以下及几种

1. 修改镜像源,改成国内的镜像地址

注意: docker pull时修改系统的代理不会让docker pull走系统代理,docker pull 的代理被 systemd 接管,所以需要设置 systemd...,docker build/run 的代理参考方法2

# 创建以下文件
vim /etc/docker/daemon.json

编辑模式输入以下内容

{
  "registry-mirrors":[
        "https://docker.1panel.live",
        "https://docker.anyhub.us.kg",
        "https://dockerhub.icu"
  ]
}

或者

{
    "registry-mirrors": ["https://docker.mirrors.ustc.edu.cn"]
}

修改完以后按以下命令生效配置

systemctl daemon-reload
systemctl restart docker

2 设置为docker提供代理

设置 docker 全局代理
设置方法参考官方文档: https://docs.docker.com/network/proxy/
注意新版和旧版本(17.07以前)设置方法不一样,比旧版更简单而且不需要重启服务,网上文章基本都是针对旧版本的,可能未来又变化了,所以多看官方文档~
以及这种设置方法只对 build 和 run 的容易有用, docker pull 要按照2.1的方法设置,注意这是容器内部的代理
vim ~/.docker/config.json

{
 "proxies":
 {
   "default":
   {
     "httpProxy": "http://172.17.0.1:8123",
     "httpsProxy": "http://172.17.0.1:8123",
     "noProxy": "localhost,127.0.0.1,.daocloud.io"
   }
 }
}

这样设置后,build和run都会将http_proxy和https_proxy ftp_proxy变量设置成对应的代理地址,如果你在容器里面不想使用这个代理了,需要export http_proxy= 和 export https_proxy= 将两个变量设置为空

2.1 docker pull代理设置

创建

sudo mkdir -p /etc/systemd/system/docker.service.d
sudo vim /etc/systemd/system/docker.service.d/http-proxy.conf

输入以下内容

[Service]
Environment="HTTP_PROXY=http://127.0.0.1:8123"
Environment="HTTPS_PROXY=http://127.0.0.1:8123"
Environment="NO_PROXY=localhost,127.0.0.1,.example.com"

这里的127.0.0.1是直接用了本机的 http 代理,然后重启服务才能生效

sudo systemctl daemon-reload
sudo systemctl restart docker
可以通过sudo systemctl show --property=Environment docker看到设置的环境变量。

然后docker pull就会使用代理啦!

参考资料:https://www.cnblogs.com/Chary/p/18502958

posted @ 2024-11-06 14:02  学不会xuebuhui  阅读(375)  评论(0编辑  收藏  举报
Language: javascript