docker image build 命令失败,并显示“(等待标题时超出 Client.Timeout)”

docker image build 命令失败,并显示“(等待标题时超出 Client.Timeout)”

我也是 docker 和 Ubuntu 16.04 操作系统的新手。我的配置如下:

乌本图:

$lsb_release -a

No LSB modules are available.

Distributor ID: Ubuntu

Description:    Ubuntu 16.04.5 LTS

Release:    16.04

Codename:   xenial

Docker:

$ docker info

Containers: 2

 Running: 0

 Paused: 0

 Stopped: 2

Images: 5

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-42-generic

Operating System: Ubuntu 16.04.5 LTS

OSType: linux

Architecture: x86_64

CPUs: 4

Total Memory: 15.4GiB

Name: smarthi-ORADEV

ID: 3OIT:CLN4:HNUU:W4SG:Z6OZ:NRRV:WSSN:E7PO:A2ZZ:XGYI:CXUZ:VBUD

Docker Root Dir: /var/lib/docker

Debug Mode (client): false

Debug Mode (server): false

Username: bluesangig

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

我已连接到办公室 VPN 网络,并且通过笔记本电脑上完成的网络代理配置,我对办公室和互联网的所有访问均运行正常。

甚至docker container run命令也运行良好。

但是当我尝试docker image build使用其内容为的docker文件时:

从 busybox 运行 echo“构建简单的 docker 镜像”CMD [echo,“hello 容器”]

我收到以下错误信息:

$ docker image build -t testimg .
Sending build context to Docker daemon  2.048kB
Step 1/3 : FROM busybox
Get https://registry-1.docker.io/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)

我搜索了一下,发现我们可能需要在文件中设置代理~/.docker/config.json,并且我已按照问题

即使按照上述问题中的建议添加了条目后,我仍然面临同样的问题。

我现在不太清楚如何使用 docker image build 解决这个问题。如能得到任何帮助我将不胜感激。

答案1

经过多次尝试和谷歌搜索后...我终于能够让 docker 在我的办公室 VPN 后面工作。

为了让可能面临与我类似问题的人们受益,下面是我为解决该问题所执行的步骤:

我在三个不同的地方修改了代理值并修复了这个问题。

  1. /etc/systemd/system/docker.service.d/http-proxy.conf检查您的设置中是否存在此文件,如果不存在则创建此文件并执行以下步骤:

    • 打开文件并在其中添加以下语句并保存:

      [Service]
      Environment="HTTP_PROXY=http://proxyHost:proxyPort"
      Environment="HTTPS_PROXY=http://proxyHost:proxyPort"
      Environment="NO_PROXY=localhost,127.0.0.1"
      
    • 通过运行以下命令清除上述更改:

      sudo systemctl daemon-reload
      
    • 通过运行以下命令来验证上述更改是否已生效。这将打印环境变量值:

      sudo system ctl show --property Environment docker
      
    • 成功验证变量已设置后,通过运行以下命令重新启动 docker 服务:

      sudo systemctl restart docker
      
  2. ~/.docker/config.json:将下面显示的json属性添加到文件中现有的属性中。

        "proxies": {
          "defaults": {
            "httpProxy":"http://proxyHost:proxyPort",
            "httpsProxy":"http://proxyHost:proxyPort"
          }
        }
    
  3. /etc/default/docker:打开或创建包含以下内容的文件:

    export http_proxy='http://proxyHost:proxyPort'
    export https_proxy='http://proxyHost:proxyPort'
    

完成上述所有更改后,我重新启动了设置,然后 docker image pull 和其他 docker 命令开始正常工作。

注意:上述所有更改可能都不是必需的,但对我来说,上述更改确保了在我连接到 VPN 后,docker 能够正常工作。

答案2

在文件中/etc/default/docker,添加:

export http_proxy='http://<host>:<port>'
export https_proxy='http://<host>:<port>'

重启 Docker

sudo service docker restart

相关内容