Docker on Linux:所有操作(hello-world、拉取图像等)产生超时
Docker on Linux: All actions (hello-world, pull image, etc) yield timeouts
我知道这是一个常见问题,但我花了两个小时试图通过 docker run hello-world
并且完全被难住了。
我尝试的一切都会产生 net/http 等待连接超时。
运行 docker login
:
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: ******
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
运行 你好世界:
mike@tictac:~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
我的 docker 版本是全新安装的 AFAIK:
mike@tictac:~$ docker --version
Docker version 18.09.0, build 4d60db4
我已经尝试将 8.8.8.8 添加到我的 /etc/resolv.conf 中,但没有成功:
mike@tictac:~$ cat /etc/resolv.conf
# Generated by NetworkManager
search home
nameserver 127.0.0.53
nameserver 8.8.8.8
我认为我的 /etc/hosts 文件也很好:
mike@tictac:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 tictac
8.8.8.8 tictac
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
这是我的 docker 信息:
mike@tictac:~$ docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 18.09.0
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: c4446665cb9c30056f4998ed953e6d4ff22c7c39
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-33-generic
Operating System: Linux Mint 19
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 15.37GiB
Name: tictac
ID: J54P:ILHO:J76M:AF27:MDKJ:BIDS:WODK:MA6N:IICP:TIMJ:BIUN:H56O
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
HTTP Proxy: http://proxy.example.com:80/
HTTPS Proxy: http://1.1.1.1:111
No Proxy: localhost,127.0.0.1,docker-registry.somecorporation.com
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
WARNING: No swap limit support
而且我已经确认 docker 确实是 运行:
mike@tictac:~$ sudo service docker status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/docker.service.d
└─10_docker_proxy.conf, http-proxy.conf
Active: active (running) since Fri 2018-11-16 11:06:36 EST; 6min ago
Docs: https://docs.docker.com
Main PID: 6190 (dockerd)
Tasks: 22
CGroup: /system.slice/docker.service
└─6190 /usr/bin/dockerd -H unix://
要是能打通hello-world就好了
编辑:也相关,我可以直接卷曲 URL 就好了:
mike@tictac:~/Projects/conserve-with-us/conserve-with-us-api$ curl https://registry-1.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
在这种情况下,我通常怀疑代理配置,您的 docker info
也显示了一些不一致的 HTTP/HTTPS 和旁路配置。
HTTP Proxy: http://proxy.example.com:80/
HTTPS Proxy: http://1.1.1.1:111
No Proxy: localhost,127.0.0.1,docker-registry.somecorporation.com
通常大多数人根本不需要设置这些,但一些公司强制执行非透明代理设置,但在这些情况下,前 2 个通常是相同的,对于旁路配置,它可能包括 /var/run/docker.sock
还有。
我会删除或重置 docker 守护程序和客户端的所有代理配置,以确保它们都匹配:
dockerd proxy
代理配置:https://docs.docker.com/config/daemon/systemd/
docker client
代理配置:https://docs.docker.com/network/proxy/
因此,如果您需要设置非透明代理,我还会确保您的 http_proxy
、https_proxy
和 proxy_bypass
环境变量也与您预期的代理配置匹配:
env | grep proxy
因此,使用 curl 或支持这些的其他 linux 应用程序,您会看到相同的结果。
如果您正在使用 Linux mint,只需转到 systems-settings 中的网络,在您连接的网络的设置按钮中,您会在 ipv4/ipv6 部分找到 DNS 字段。
我知道这是一个常见问题,但我花了两个小时试图通过 docker run hello-world
并且完全被难住了。
我尝试的一切都会产生 net/http 等待连接超时。
运行 docker login
:
Login with your Docker ID to push and pull images from Docker Hub. If you don't have a Docker ID, head over to https://hub.docker.com to create one.
Username: ******
Password:
Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
运行 你好世界:
mike@tictac:~$ docker run hello-world
Unable to find image 'hello-world:latest' locally
docker: Error response from daemon: Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers).
See 'docker run --help'.
我的 docker 版本是全新安装的 AFAIK:
mike@tictac:~$ docker --version
Docker version 18.09.0, build 4d60db4
我已经尝试将 8.8.8.8 添加到我的 /etc/resolv.conf 中,但没有成功:
mike@tictac:~$ cat /etc/resolv.conf
# Generated by NetworkManager
search home
nameserver 127.0.0.53
nameserver 8.8.8.8
我认为我的 /etc/hosts 文件也很好:
mike@tictac:~$ cat /etc/hosts
127.0.0.1 localhost
127.0.1.1 tictac
8.8.8.8 tictac
# The following lines are desirable for IPv6 capable hosts
::1 ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
这是我的 docker 信息:
mike@tictac:~$ docker info
Containers: 0
Running: 0
Paused: 0
Stopped: 0
Images: 0
Server Version: 18.09.0
Storage Driver: overlay2
Backing Filesystem: extfs
Supports d_type: true
Native Overlay Diff: true
Logging Driver: json-file
Cgroup Driver: cgroupfs
Plugins:
Volume: local
Network: bridge host macvlan null overlay
Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
Swarm: inactive
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: c4446665cb9c30056f4998ed953e6d4ff22c7c39
runc version: 4fc53a81fb7c994640722ac585fa9ca548971871
init version: fec3683
Security Options:
apparmor
seccomp
Profile: default
Kernel Version: 4.15.0-33-generic
Operating System: Linux Mint 19
OSType: linux
Architecture: x86_64
CPUs: 12
Total Memory: 15.37GiB
Name: tictac
ID: J54P:ILHO:J76M:AF27:MDKJ:BIDS:WODK:MA6N:IICP:TIMJ:BIUN:H56O
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): false
HTTP Proxy: http://proxy.example.com:80/
HTTPS Proxy: http://1.1.1.1:111
No Proxy: localhost,127.0.0.1,docker-registry.somecorporation.com
Registry: https://index.docker.io/v1/
Labels:
Experimental: false
Insecure Registries:
127.0.0.0/8
Live Restore Enabled: false
Product License: Community Engine
WARNING: No swap limit support
而且我已经确认 docker 确实是 运行:
mike@tictac:~$ sudo service docker status
● docker.service - Docker Application Container Engine
Loaded: loaded (/lib/systemd/system/docker.service; enabled; vendor preset: enabled)
Drop-In: /etc/systemd/system/docker.service.d
└─10_docker_proxy.conf, http-proxy.conf
Active: active (running) since Fri 2018-11-16 11:06:36 EST; 6min ago
Docs: https://docs.docker.com
Main PID: 6190 (dockerd)
Tasks: 22
CGroup: /system.slice/docker.service
└─6190 /usr/bin/dockerd -H unix://
要是能打通hello-world就好了
编辑:也相关,我可以直接卷曲 URL 就好了:
mike@tictac:~/Projects/conserve-with-us/conserve-with-us-api$ curl https://registry-1.docker.io/v2/
{"errors":[{"code":"UNAUTHORIZED","message":"authentication required","detail":null}]}
在这种情况下,我通常怀疑代理配置,您的 docker info
也显示了一些不一致的 HTTP/HTTPS 和旁路配置。
HTTP Proxy: http://proxy.example.com:80/
HTTPS Proxy: http://1.1.1.1:111
No Proxy: localhost,127.0.0.1,docker-registry.somecorporation.com
通常大多数人根本不需要设置这些,但一些公司强制执行非透明代理设置,但在这些情况下,前 2 个通常是相同的,对于旁路配置,它可能包括 /var/run/docker.sock
还有。
我会删除或重置 docker 守护程序和客户端的所有代理配置,以确保它们都匹配:
dockerd proxy
代理配置:https://docs.docker.com/config/daemon/systemd/docker client
代理配置:https://docs.docker.com/network/proxy/
因此,如果您需要设置非透明代理,我还会确保您的 http_proxy
、https_proxy
和 proxy_bypass
环境变量也与您预期的代理配置匹配:
env | grep proxy
因此,使用 curl 或支持这些的其他 linux 应用程序,您会看到相同的结果。
如果您正在使用 Linux mint,只需转到 systems-settings 中的网络,在您连接的网络的设置按钮中,您会在 ipv4/ipv6 部分找到 DNS 字段。