无法找到图像错误,如何设置代理下载图像

时间:2016-01-18 10:55:08

标签: docker

我需要设置公司代理,以便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 answer,但在Ubuntu 12.04中没有systemctl。我怎么能这样做?

感谢。

6 个答案:

答案 0 :(得分:3)

来自Docker官方文档,

为docker服务创建一个systemd插入目录:

$ 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/

答案 1 :(得分:2)

尝试运行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

答案 2 :(得分:2)

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

http_proxy=your_proxy:port

答案 3 :(得分:1)

仅适用于Ubuntu

修改/etc/defaults/docker.io并添加以下行:

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

然后重启docker守护程序:

sudo service docker.io restart

答案 4 :(得分:1)

您需要为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

为泊坞窗(客户端)设置代理

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

答案 5 :(得分:-1)

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

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