预期行为 在Windows的docker image上安装git / make等软件包时,应成功建立与外部Urls的连接
实际行为
获取 http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
错误:http://dl-cdn.alpinelinux.org/alpine/v3.9/main:临时错误 (稍后重试)
警告:忽略APKINDEX.b89edf6e.tar.gz:没有此类文件或目录 错误:http://dl-cdn.alpinelinux.org/alpine/v3.9/community:临时 错误(请稍后再试)
信息 我有一个本地设置 Docker桌面社区版本2.0.0.3,通道=稳定 操作系统:Windows 10 Enterprise Edition 64位。
我还使用Docker Desktop启用了Kubernetes v1.10.11。
我在使用docker-compose build命令创建映像时安装git(如下所述)
错误: 错误1:
第6/7步:运行apk更新&& apk添加--no-cache git
--->在327463a09bef中运行,获取了http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz
错误:http://dl-cdn.alpinelinux.org/alpine/v3.9/main:DNS查找 错误警告:忽略APKINDEX.b89edf6e.tar.gz:无此类文件或 目录获取 http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
错误:http://dl-cdn.alpinelinux.org/alpine/v3.9/community:DNS查找 错误警告:忽略APKINDEX.737f7e01.tar.gz:无此类文件或 目录2错误;提供53种不同的包装
采取的行动: 使用ipconfig / all在我公司中找到DNS服务器详细信息,并使用它更新了Docker Daemon Advanced设置:
{
"registry-mirrors": [],
"insecure-registries": [],
"debug": true,
"experimental": false,
"dns": [
"xx.x.xxx.x"
]
}
发布此DNS错误后消失,但我收到以下错误:
错误2:
第6/7步:运行apk更新&& apk添加--no-cache git --->在5a75ec688b68中运行
获取 http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz 取 http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz
错误:http://dl-cdn.alpinelinux.org/alpine/v3.9/main:临时错误 (稍后重试)
警告:忽略APKINDEX.b89edf6e.tar.gz:没有此类文件或目录 错误:http://dl-cdn.alpinelinux.org/alpine/v3.9/community:临时 错误(请稍后再试)
警告:忽略APKINDEX.737f7e01.tar.gz:没有此类文件或目录 2个错误; 53个不同的软件包可用错误:服务“服务测试” 构建失败:命令'/ bin / sh -c apk更新&& apk添加 --no-cache git'返回了非零代码:2
我尝试过的其他方法: 1,创建了一个新的出站防火墙规则,以允许所有从docker.exe出现到外部URL的连接 2.使用名称服务器xx.x.xxx.x更新了Windows主机上的resolve.conf文件,并重新启动了Docker
下面是我在C:\ ProgramData \ DockerDesktop \ service.txt文件中看到的日志
/v1.30/build?t=感兴趣的注册&q = False&nocache = False&rm = True&forcerm = False&pull = False \ n“ [19:29:48.857][Moby] [Info] [11683.758106] docker0:端口 1(vetheb98adc)进入阻止状态
[19:29:48.887] [Moby] [Info] [11683.818430] docker0:端口 1(vetheb98adc)进入了禁用状态
[19:29:48.916] [Moby] [Info] [11683.849358]设备vetheb98adc已进入 混杂模式
[19:29:48.951] [Moby] [Info] [11683.878312] IPv6:ADDRCONF(NETDEV_UP): vetheb98adc:链接尚未准备好
[19:29:49.032] [Moby] [Info] [11683.970198] IPVS:创建网络 大小= 2104 id = 22
[19:29:49.061] [Moby] [Info] [11683.994398] IPVS:ftp:已加载支持 在端口[0] = 21
[19:29:49.191] [Moby] [Info] [11684.130505] eth0:从 veth117829a
[19:29:49.262] [Moby] [Info] [11684.190674] IPv6: ADDRCONF(NETDEV_CHANGE):vetheb98adc:链接已准备就绪 [19:29:49.292] [Moby] [Info] [11684.223896] docker0:端口 1(vetheb98adc)进入阻止状态
[19:29:49.324] [Moby] [Info] [11684.253478] docker0:端口 1(vetheb98adc)进入了转发状态[19:29:59.697] [Moby] [Info] [11694.616873] docker0:端口1(vetheb98adc)进入了禁用状态
[19:29:59.719] [Moby] [Info] [11694.660049] veth117829a:从 eth0 [19:29:59.828][Moby] [Info] [11694.760730] docker0:端口 1(vetheb98adc)进入了禁用状态
[19:29:59.854] [Moby] [Info] [11694.789712]设备vetheb98adc左 混杂模式[19:29:59.888] [Moby] [Info] [11694.815720] docker0: 端口1(vetheb98adc)进入禁用状态
[19:30:00.150] [ApiProxy] [Info] time =“ 2019-07-13T19:30:00 + 10:00” msg =“ proxy <<开机自检 /v1.30/build?t=感兴趣的注册&q = False&nocache = False&rm = True&forcerm = False&pull = False (12.2535104s)\ n“
我很确定这与我的公司防火墙规则有关,该规则阻止了传出流量。这两个高山URL都可以从我的浏览器访问。如果我需要开放任何端口以进行传出流量,那么实际要做的就是数周以来被封锁的地方。
相同的设置适用于我的家庭网络中的所有个人Windows 10笔记本电脑,其中所有docker和kubernetes版本都完全相同。
Windows版本:Windows 10 Enterprise Edition 64位 Docker桌面版本:Docker桌面社区版本2.0.0.3,Channel =稳定 重现行为的步骤 Dockerfile:
FROM openjdk:8u191-jre-alpine
VOLUME /tmp
COPY target/*.jar app.jar
ENTRYPOINT [ "java","-Djava.security.egd=file:/dev/./unrandom","-Dspring.profiles.active=local","-Daws.accessKeyId=XXXXX","-Daws.secretKey=XXXXX","-jar","/app.jar"]
RUN apk update
&& apk add --no-cache git
docker-compose.yml
version: '3.3'
services:
service-test:
image: service-image
ports:
8181:8443
5005:5005
build: '../service-test-project'
Docker command used:
docker-compose build --build-arg http_proxy='http://xx:xxx@corp-proxy.corp.dmz:8080' --build-arg https_proxy='http://xx:xxx
@corp-proxy.corp.dmz:8080' --build-arg HTTPS_PROXY='http://xx:xxx@corp-proxy.corp.dmz:8080' --build-arg HTTP_PROXY='http://xx:xxx@corp-proxy.corp.dmz:8080'
答案 0 :(得分:1)
我在我工作的公司中遇到了这个问题,最终我可以通过执行以下操作来解决它。
proxy.pac
文件(可以在Google上搜索此部分,不太困难)config.json
中打开C:\Users\<user>\.docker\config.json
文件noProxy
我照原样离开了,它没有影响结果。{
"proxies": {
"default": {
"httpProxy": "http://my_proxy:8080",
"httpsProxy": "http://my_proxy:8080",
"noProxy": "*.test.example.com,.example2.com"
}
}
}
ctnml.ini
文件和通过Docker GUI
更改代理或更改我的DNS服务器无效。