我也是 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 后面工作。
为了让可能面临与我类似问题的人们受益,下面是我为解决该问题所执行的步骤:
我在三个不同的地方修改了代理值并修复了这个问题。
/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
~/.docker/config.json
:将下面显示的json属性添加到文件中现有的属性中。"proxies": { "defaults": { "httpProxy":"http://proxyHost:proxyPort", "httpsProxy":"http://proxyHost:proxyPort" } }
/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