【问题标题】:Unable to find image error, How to setup proxy to download images找不到图片错误,如何设置代理下载图片
【发布时间】:2016-04-23 12:28:44
【问题描述】:

我需要设置公司代理,以便 Docker 可以从公共注册表下载图像。

$ sudo docker run hello-world 
Unable to find image 'hello-world:latest' locally 
Pulling repository docker.io/library/hello-world 
Error while pulling image: Get https://index.docker.io/v1/repositories/library/hello-world/images: dial tcp: lookup index.docker.io: no such host

我使用的是 Ubuntu 12.04 机器。我找到了 this answersystemctl 在 Ubuntu 12.04 中不存在。我该怎么做?

谢谢。

【问题讨论】:

标签: docker


【解决方案1】:

尽管添加了代理,但 docker 版本“18.06.0”不起作用,但是 docker 的较低版本可以正常工作。

编辑 1:重新安装 docker-ce 即可!!

【讨论】:

    【解决方案2】:

    仅适用于 Ubuntu

    编辑/etc/defaults/docker.io 并添加以下行:

    export http_proxy='http://user:password@proxy-host:proxy-port'
    

    然后重启docker守护进程:

    sudo service docker.io restart
    

    【讨论】:

    • 没有/etc/defaults/ 目录。也许你的意思是 /etc/default/ 。也没有docker.io 服务,但也许你有不同的 Ubuntu 版本(我有仿生 LTS 18.04.4)
    【解决方案3】:

    您需要为 docker server (docker-machine) 和 docker client (docker) 设置代理。

    为 docker-machine 设置代理: 我想你可以在创建机器的时候指定这个,见docker/toolbox#102 (comment)

    docker-machine create -d virtualbox \
    --engine-env HTTP_PROXY=http://example.com:8080 \
    --engine-env HTTPS_PROXY=https://example.com:8080 \
    --engine-env NO_PROXY=example2.com \
    default
    

    为 docker(客户端)设置代理

    Windows

    set http_proxy=http://example.com:8080
    set https_proxy=https://example.com:8080
    

    Linux

    export http_proxy=http://example.com:8080
    export https_proxy=https://example.com:8080
    

    【讨论】:

      【解决方案4】:

      来自 Docker 官方文档,

      为 docker 服务创建一个systemd drop-in 目录:

      $ sudo mkdir -p /etc/systemd/system/docker.service.d
      

      创建一个名为/etc/systemd/system/docker.service.d/http-proxy.conf 的文件,其中添加了HTTP_PROXY 环境变量:

      [Service]
      Environment="HTTP_PROXY=http://proxy.example.com:80/"
      

      或者,如果您使用 HTTPS 代理服务器,请创建一个名为 /etc/systemd/system/docker.service.d/https-proxy.conf 的文件,其中添加了 HTTPS_PROXY 环境变量:

      [Service]
      Environment="HTTPS_PROXY=https://proxy.example.com:443/"
      

      如果您需要在不使用代理的情况下联系内部 Docker 注册表,您可以通过 NO_PROXY 环境变量指定它们:

      [Service]    
      Environment="HTTP_PROXY=http://proxy.example.com:80/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
      

      或者,如果您使用 HTTPS 代理服务器:

      [Service]    
      Environment="HTTPS_PROXY=https://proxy.example.com:443/" "NO_PROXY=localhost,127.0.0.1,docker-registry.somecorporation.com"
      

      刷新更改:

      $ sudo systemctl daemon-reload
      

      重启 Docker:

      $ sudo systemctl restart docker
      

      验证配置是否已加载:

      $ systemctl show --property=Environment docker
      Environment=HTTP_PROXY=http://proxy.example.com:80/
      

      或者,如果您使用 HTTPS 代理服务器:

      $ systemctl show --property=Environment docker
      Environment=HTTPS_PROXY=https://proxy.example.com:443/
      

      【讨论】:

        【解决方案5】:

        在 CentOS 上,对我有用的是将此行添加到 /etc/sysconfig/docker:

        http_proxy=your_proxy:port
        

        【讨论】:

          【解决方案6】:

          我在尝试运行 hello-world 容器时遇到以下错误

          $docker run hello-world
          Unable to find image 'hello-world:latest' locally
          docker: Error response from daemon: Get https://registry-1.docker.io/v2/: dial tcp 34.205.194.204:443: getsockopt: no route to host.
          

          我尝试了以下链接中关于 HTTPS 或 HTTP 配置对我有用的步骤

          https://docs.docker.com/engine/admin/systemd/#httphttps-proxy

          【讨论】:

            猜你喜欢
            • 2019-03-09
            • 1970-01-01
            • 2022-12-07
            • 2019-04-02
            • 1970-01-01
            • 2017-08-13
            • 2011-09-11
            • 1970-01-01
            • 2020-06-21
            相关资源
            最近更新 更多