gpt4 book ai didi

windows - 建立外部连接以在 Windows 上的 docker 镜像上安装 git 时出错

转载 作者:行者123 更新时间:2023-12-02 19:24:50 26 4
gpt4 key购买 nike

预期行为
在 Windows 上的 docker 镜像上安装 git/make 等软件包时,应成功连接到外部 Url

实际行为

fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz

ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.9/main: temporary error (try again later)

WARNING: Ignoring APKINDEX.b89edf6e.tar.gz: No such file or directory ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.9/community: temporary error (try again later)



信息
我有一个本地设置
Docker 桌面社区版本 2.0.0.3,Channel=Stable
操作系统:Windows 10 企业版 64 位。

我还使用 Docker Desktop 启用了 Kubernetes v1.10.11。

我在使用 docker-compose build 命令创建图像时安装 git(如下所述)

错误:
错误一:

Step 6/7 : RUN apk update && apk add --no-cache git

---> Running in 327463a09bef fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz

ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.9/main: DNS lookup error WARNING: Ignoring APKINDEX.b89edf6e.tar.gz: No such file or directory fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz

ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.9/community: DNS lookup error WARNING: Ignoring APKINDEX.737f7e01.tar.gz: No such file or directory 2 errors; 53 distinct packages available



采取的行动:
使用 ipconfig/all 在我的公司中找到了 DNS 服务器详细信息,并使用它更新了 Docker Daemon Advanced 设置:
{
"registry-mirrors": [],
"insecure-registries": [],
"debug": true,
"experimental": false,
"dns": [
"xx.x.xxx.x"
]
}

发布此 DNS 错误消失了,但我收到以下错误:

错误2:

Step 6/7 : RUN apk update && apk add --no-cache git ---> Running in 5a75ec688b68

fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/main/x86_64/APKINDEX.tar.gz fetch http://dl-cdn.alpinelinux.org/alpine/v3.9/community/x86_64/APKINDEX.tar.gz

ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.9/main: temporary error (try again later)

WARNING: Ignoring APKINDEX.b89edf6e.tar.gz: No such file or directory ERROR: http://dl-cdn.alpinelinux.org/alpine/v3.9/community: temporary error (try again later)

WARNING: Ignoring APKINDEX.737f7e01.tar.gz: No such file or directory 2 errors; 53 distinct packages available ERROR: Service 'service-test' failed to build: The command '/bin/sh -c apk update && apk add --no-cache git' returned a non-zero code: 2



我尝试过的其他事情:
1.创建一个新的出站防火墙规则以允许所有从 docker.exe 出现的连接到外部 url
2.用nameserver xx.x.xxx.x更新了我的windows主机上的resolve.conf文件并重启了docker

下面是我在 C:\ProgramData\DockerDesktop\service.txt 文件中看到的日志

/v1.30/build?t=registration-of-interest&q=False&nocache=False&rm=True&forcerm=False&pull=False\n" [19:29:48.857][Moby ][Info ] [11683.758106] docker0: port 1(vetheb98adc) entered blocking state

[19:29:48.887][Moby ][Info ] [11683.818430] docker0: port 1(vetheb98adc) entered disabled state

[19:29:48.916][Moby ][Info ] [11683.849358] device vetheb98adc entered promiscuous mode

[19:29:48.951][Moby ][Info ] [11683.878312] IPv6: ADDRCONF(NETDEV_UP): vetheb98adc: link is not ready

[19:29:49.032][Moby ][Info ] [11683.970198] IPVS: Creating netns size=2104 id=22

[19:29:49.061][Moby ][Info ] [11683.994398] IPVS: ftp: loaded support on port[0] = 21

[19:29:49.191][Moby ][Info ] [11684.130505] eth0: renamed from veth117829a

[19:29:49.262][Moby ][Info ] [11684.190674] IPv6: ADDRCONF(NETDEV_CHANGE): vetheb98adc: link becomes ready [19:29:49.292][Moby ][Info ] [11684.223896] docker0: port 1(vetheb98adc) entered blocking state

[19:29:49.324][Moby ][Info ] [11684.253478] docker0: port 1(vetheb98adc) entered forwarding state [19:29:59.697][Moby ][Info ] [11694.616873] docker0: port 1(vetheb98adc) entered disabled state

[19:29:59.719][Moby ][Info ] [11694.660049] veth117829a: renamed from eth0 [19:29:59.828][Moby ][Info ] [11694.760730] docker0: port 1(vetheb98adc) entered disabled state

[19:29:59.854][Moby ][Info ] [11694.789712] device vetheb98adc left promiscuous mode [19:29:59.888][Moby ][Info ] [11694.815720] docker0: port 1(vetheb98adc) entered disabled state

[19:30:00.150][ApiProxy ][Info ] time="2019-07-13T19:30:00+10:00" msg="proxy << POST /v1.30/build?t=registration-of-interest&q=False&nocache=False&rm=True&forcerm=False&pull=False (12.2535104s)\n"



我很确定这与阻止传出流量的公司防火墙规则有关。两个 Alpine url 都可以从我的浏览器访问。如果我需要为传出流量打开任何端口,那么我必须做的就是几周以来我一直被阻止的地方。

相同的设置适用于我家庭网络上的个人 Windows 10 笔记本电脑,其中所有 docker 和 kubernetes 版本完全相同。

Windows 版本:Windows 10 企业版 64 位
Docker 桌面版:Docker 桌面社区版 2.0.0.3,Channel=Stable
重现行为的步骤
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'

最佳答案

我在我工作的公司面临这个问题,我最终能够通过执行以下操作来解决它。

  • 下载proxy.pac文件(可以google这部分,不太难)
  • 选择编辑器打开(sublime、vs、jetbrains、notepad)
  • 打开config.json文件在 C:\Users\<user>\.docker\config.json
  • 将以下内容添加到文件中,但将 http 和 https 代理替换为 proxy.pac 文件中的代理之一。 noProxy我就这样离开了,不影响结果。
  • {
    "proxies": {
    "default": {
    "httpProxy": "http://my_proxy:8080",
    "httpsProxy": "http://my_proxy:8080",
    "noProxy": "*.test.example.com,.example2.com"
    }
    }
    }
  • 重启 docker
  • 然后再试一次。
    这是唯一对我有用的东西。更改 ctnml.ini通过Docker GUI 更改代理文件和代理或更改我的 DNS 服务器不起作用。
  • 关于windows - 建立外部连接以在 Windows 上的 docker 镜像上安装 git 时出错,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/57048320/

    26 4 0
    Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
    广告合作:1813099741@qq.com 6ren.com