侧边栏壁纸
博主头像
术业有道之编程博主等级

亦是三月纷飞雨,亦是人间惊鸿客。亦是秋霜去叶多,亦是风华正当时。

  • 累计撰写 99 篇文章
  • 累计创建 50 个标签
  • 累计收到 0 条评论

目 录CONTENT

文章目录

解决docker pull不到镜像的问题

Administrator
2025-01-22 / 0 评论 / 0 点赞 / 329 阅读 / 2779 字

写在前面

自从docker站点大范围挂了之后,使用科学上网也拉不到镜像。今天花时间研究了一下,特此记录一下。

一、解决 docker pull 不下来镜像

docker ci 命令是走守护进程网络的,而守护进程在Ubuntu上是给systemctl管理的,所以只需要给这个守护进程单独设置网络代理即可

前提条件:有个科学上网环境,假设ip127.0.0.1,端口是7890

  • 创建docker守护进程设置文件夹
    • mkdir /etc/systemd/system/docker.service.d
  • 创建守护进程网络代理文件
    • vi /etc/systemd/system/docker.service.d/proxy.conf
  • 在新创建的proxy.conf文件中添加以下内容
      [Service]
    Environment="HTTP_PROXY=http://127.0.0.1:7890"
    Environment="HTTPS_PROXY=http://127.0.0.1:7890"
    Environment="NO_PROXY=localhost,127.0.0.1"
    
  • 验证代理设置
    • systemctl show --property=Environment docker
  • 刷新systemctl列表
    • sudo systemctl daemon-reload
  • 重启docker守护进程
    • sudo systemctl restart docker

到此为止就可以愉快使用docker pull

二、解决 docker 内容器不能访问某些网络

docker容器内部是一个个的user,网络权限在docker > user上,只需要设置容器级别的网络代理就可以。

前提条件:

  • 有个科学上网环境,假设ip192.168.50.27 或 127.0.0.1,端口是7890

  • 假设本机的内网ip地址是192.168.50.27

  • 打开docker配置文件,没有就新建

    • vi ~/.docker/config.json
  • 追加以下内容(如果你的文件中有内容,最外层的大括号需要删掉,从"proxies"开始)

    {
      "proxies": {
          "default": {
            "httpProxy": "http://192.168.50.27:7890",
            "httpsProxy": "http://192.168.50.27:7890",
            "noProxy": "localhost,127.0.0.1"
          }
      }
    }
    
  • 重启docker守护进程(本质上是批量重启了所有容器,让容器都应用了这个代理规则),也可以不重启,那样只有新启动的容器才会生效

    • sudo systemctl restart docker

完事收工

个人公众号

0

评论区