Docker 从 Nexus 代理拉取 来自守护程序的错误响应:未知:未知
Docker pull from Nexus proxy Error response from daemon : unknown: unknown
配置 Nexus docker 注册表和代理后 "dockerhub-proxy" 如下所述:
我可以在 docker 登录后将图像推送到 nexus 注册表,但无法通过 nexus 代理 "dockerhub-proxy" 从 docker 集线器中提取图像,并且错误没有提供详细信息:
来自守护程序的错误响应:未知:未知
这是针对 Docker 桌面 Windows 上的 docker 守护进程客户端 运行 :
版本 2.0.0.3 (31259)
渠道:稳定
构建:8858db3
引擎:18.09.2
我已经通过 docker 客户端从 Linux EC2 实例尝试过,它运行良好:
[root@ip-host-daemon docker]# docker pull ip_nexus_host:port_http_connector_nexus_proxy/mongo
Using default tag: latest
latest: Pulling from mongo
Digest: sha256:29d7ca01f9b7e3812a831ff143620e93ddf5e34bb9ac672d91140e064158a0fc
Status: Downloaded newer image for ip_nexus_host:port_http_connector_nexus_proxy/mongo:latest
我不知道为什么在 windows 上它不起作用
PS C:\Dev\workspace> docker push my_dns/nexus/repository/dockerhub-proxy/image-name:1.0.1
The push refers to repository [my_dns/nexus/repository/dockerhub-proxy/image-name]
0bca66726bc2: Pushed
1.0.1: digest: sha256:0736228548d13e8d39fba5a0ed5cd8a7719074318fe9f8ddfc395fd454afc01f size: 528
PS C:\Dev\workspace> docker pull my_dns/nexus/repository/dockerhub-proxy/mysql:latest
**Error response from daemon: unknown: unknown**
我正在寻找通过 Docker Windows 客户端守护程序从 Docker Hub 拉取官方 docker 图像的能力,例如 mongo通过在 Nexus OSS 上配置的 Nexus 代理,并通过 http 连接器暴露到 Nexus 组(包含主机和代理),Nexus OSS 托管在 AWS EC2 linux 实例 VPC/private 子网上,没有任何 [=67] =] hostname/EIP 但通过 ELB/ALB.
感谢您的帮助
根据这篇文章:
您的 Nexus 通过以下语法公开可供 docker CLI 访问的 HTTP(S) 连接器:
docker pull <nexus-hostname>:<port_nexus_docker_group>/<dockerHubImage>:<officialTag>
docker push <nexus-hostname>:<port_nexus_docker_host>/<yourImage>:<yourTag>
如果你的 Nexus 在你的 VPC 中有 public DNS,很明显,只需打开你的 EC2 实例托管和 运行 Nexus 服务器的安全组上的每个端口,以允许来自你的入站网络流量IP range/CIDR 来源。
如果您的 Nexus 在您的 VPC 的私有子网中有私有 IP,只需在 public 子网上的同一 VPC 上在它前面放置一个 AWS-ELB 网络负载均衡器,每个 HTTP 有两个 TCP 侦听器(S) 端口暴露(nexus-group 和 nexus-hosted)重定向到两个 TCP 目标组,在托管您的 Nexus 服务器的 EC2 实例 ID 上具有实例目标类型,这将重定向来自您的 [=36= 的网络流量] DNS 到您的 ELB,然后到您的 Nexus EC2 实例。
请注意,我们没有使用 AWS-ELB Application Load Balancer,因为它仅适用于 HTTP 侦听器,并且 Docker 不支持在您使用上下文时指定存储库路径启动 docker CLI,默认情况下它是 HTTP(S) 并且所有这些都使用 URL 路径模式 /v2/* 进行中间调用。
正确设置和配置后,您将能够 docker 登录、拉取和推送图像到您的内部 nexus 存储库,就像这个示例 powershell 会话一样:
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS D:\> docker login <host_redirect_to_NLB>:<port_nexus_docker_group>
Username: tarik
Password:
Login Succeeded
PS D:\> docker login <host_redirect_to_NLB>:<port_nexus_docker_host>
Username: tarik
Password:
Login Succeeded
PS D:\> docker pull <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux
Using default tag: latest
latest: Pulling from amazonlinux
72d97abdfae3: Pull complete
Digest: sha256:04f5ea9fec3f1f514451ea7c1a1a77a7c023787cb6cc066cc6d0413b56cd0eac
Status: Downloaded newer image for <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux:latest
PS D:\> docker tag <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux <host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux:1.0
PS D:\> docker push <host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux:1.0
The push refers to repository [<host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux]
f387c8b346c8: Pushed
1.0: digest: sha256:04f5ea9fec3f1f514451ea7c1a1a77a7c023787cb6cc066cc6d0413b56cd0eac size: 529
PS D:\> more C:\Users\Tarik\.docker\config.json
{
"auths": {
"<host_redirect_to_NLB>:<port_nexus_docker_host>": {},
"<host_redirect_to_NLB>:<port_nexus_docker_group>": {}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.09.2 (windows)"
},
"credsStore": "wincred",
"stackOrchestrator": "swarm"
}
PS D:\> more C:\Users\Tarik\.docker\daemon.json
{
"registry-mirrors": [
"https://<host_redirect_to_NLB>:<port_nexus_docker_group>"
],
"insecure-registries": [
"<host_redirect_to_NLB>:<port_nexus_docker_host>",
"<host_redirect_to_NLB>:<port_nexus_docker_group>"
],
"disable-legacy-registry": true,
"debug": true,
"experimental": false
}
配置 Nexus docker 注册表和代理后 "dockerhub-proxy" 如下所述:
我可以在 docker 登录后将图像推送到 nexus 注册表,但无法通过 nexus 代理 "dockerhub-proxy" 从 docker 集线器中提取图像,并且错误没有提供详细信息:
来自守护程序的错误响应:未知:未知
这是针对 Docker 桌面 Windows 上的 docker 守护进程客户端 运行 :
版本 2.0.0.3 (31259) 渠道:稳定 构建:8858db3 引擎:18.09.2
我已经通过 docker 客户端从 Linux EC2 实例尝试过,它运行良好:
[root@ip-host-daemon docker]# docker pull ip_nexus_host:port_http_connector_nexus_proxy/mongo
Using default tag: latest
latest: Pulling from mongo
Digest: sha256:29d7ca01f9b7e3812a831ff143620e93ddf5e34bb9ac672d91140e064158a0fc
Status: Downloaded newer image for ip_nexus_host:port_http_connector_nexus_proxy/mongo:latest
我不知道为什么在 windows 上它不起作用
PS C:\Dev\workspace> docker push my_dns/nexus/repository/dockerhub-proxy/image-name:1.0.1
The push refers to repository [my_dns/nexus/repository/dockerhub-proxy/image-name]
0bca66726bc2: Pushed
1.0.1: digest: sha256:0736228548d13e8d39fba5a0ed5cd8a7719074318fe9f8ddfc395fd454afc01f size: 528
PS C:\Dev\workspace> docker pull my_dns/nexus/repository/dockerhub-proxy/mysql:latest
**Error response from daemon: unknown: unknown**
我正在寻找通过 Docker Windows 客户端守护程序从 Docker Hub 拉取官方 docker 图像的能力,例如 mongo通过在 Nexus OSS 上配置的 Nexus 代理,并通过 http 连接器暴露到 Nexus 组(包含主机和代理),Nexus OSS 托管在 AWS EC2 linux 实例 VPC/private 子网上,没有任何 [=67] =] hostname/EIP 但通过 ELB/ALB.
感谢您的帮助
根据这篇文章:
您的 Nexus 通过以下语法公开可供 docker CLI 访问的 HTTP(S) 连接器:
docker pull <nexus-hostname>:<port_nexus_docker_group>/<dockerHubImage>:<officialTag>
docker push <nexus-hostname>:<port_nexus_docker_host>/<yourImage>:<yourTag>
如果你的 Nexus 在你的 VPC 中有 public DNS,很明显,只需打开你的 EC2 实例托管和 运行 Nexus 服务器的安全组上的每个端口,以允许来自你的入站网络流量IP range/CIDR 来源。
如果您的 Nexus 在您的 VPC 的私有子网中有私有 IP,只需在 public 子网上的同一 VPC 上在它前面放置一个 AWS-ELB 网络负载均衡器,每个 HTTP 有两个 TCP 侦听器(S) 端口暴露(nexus-group 和 nexus-hosted)重定向到两个 TCP 目标组,在托管您的 Nexus 服务器的 EC2 实例 ID 上具有实例目标类型,这将重定向来自您的 [=36= 的网络流量] DNS 到您的 ELB,然后到您的 Nexus EC2 实例。
请注意,我们没有使用 AWS-ELB Application Load Balancer,因为它仅适用于 HTTP 侦听器,并且 Docker 不支持在您使用上下文时指定存储库路径启动 docker CLI,默认情况下它是 HTTP(S) 并且所有这些都使用 URL 路径模式 /v2/* 进行中间调用。
正确设置和配置后,您将能够 docker 登录、拉取和推送图像到您的内部 nexus 存储库,就像这个示例 powershell 会话一样:
Windows PowerShell
Copyright (C) Microsoft Corporation. All rights reserved.
PS D:\> docker login <host_redirect_to_NLB>:<port_nexus_docker_group>
Username: tarik
Password:
Login Succeeded
PS D:\> docker login <host_redirect_to_NLB>:<port_nexus_docker_host>
Username: tarik
Password:
Login Succeeded
PS D:\> docker pull <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux
Using default tag: latest
latest: Pulling from amazonlinux
72d97abdfae3: Pull complete
Digest: sha256:04f5ea9fec3f1f514451ea7c1a1a77a7c023787cb6cc066cc6d0413b56cd0eac
Status: Downloaded newer image for <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux:latest
PS D:\> docker tag <host_redirect_to_NLB>:<port_nexus_docker_group>/amazonlinux <host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux:1.0
PS D:\> docker push <host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux:1.0
The push refers to repository [<host_redirect_to_NLB>:<port_nexus_docker_host>/tarik-awslinux]
f387c8b346c8: Pushed
1.0: digest: sha256:04f5ea9fec3f1f514451ea7c1a1a77a7c023787cb6cc066cc6d0413b56cd0eac size: 529
PS D:\> more C:\Users\Tarik\.docker\config.json
{
"auths": {
"<host_redirect_to_NLB>:<port_nexus_docker_host>": {},
"<host_redirect_to_NLB>:<port_nexus_docker_group>": {}
},
"HttpHeaders": {
"User-Agent": "Docker-Client/18.09.2 (windows)"
},
"credsStore": "wincred",
"stackOrchestrator": "swarm"
}
PS D:\> more C:\Users\Tarik\.docker\daemon.json
{
"registry-mirrors": [
"https://<host_redirect_to_NLB>:<port_nexus_docker_group>"
],
"insecure-registries": [
"<host_redirect_to_NLB>:<port_nexus_docker_host>",
"<host_redirect_to_NLB>:<port_nexus_docker_group>"
],
"disable-legacy-registry": true,
"debug": true,
"experimental": false
}