Docker pull от прокси Nexus Ошибка ответа от демона: неизвестно: неизвестно - PullRequest
2 голосов
/ 21 мая 2019

После настройки реестра докера Nexus и прокси-сервера «dockerhub-proxy», как описано здесь:

Я могу отправить изображения в реестр Nexus после входа в Docker, но невозможно извлечь изображение из концентратора Docker через прокси-сервер nexus «dockerhub-proxy», и ошибка не дает подробностей:

Ошибка ответа от демона: неизвестно: неизвестно

Это для клиента демона Docker, работающего в Windows Docker Desktop:

Версия 2.0.0.3 (31259) Канал: стабильный Build: 8858db3 Двигатель: 18.09.2

Я уже пробовал с экземпляра 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, например, mongo, например, проходя через прокси-сервер Nexus, настроенный на OSS Nexus, и передаваемый через http-коннектор в Nexus Group (которая содержит оба хост и прокси), Nexus OSS размещается в экземпляре AWS EC2 linux VPC / частной подсети без общедоступного имени хоста / EIP, но через ELB / ALB.

Спасибо за вашу помощь

1 Ответ

0 голосов
/ 05 июля 2019

Согласно этой статье:

https://support.sonatype.com/hc/en-us/articles/115013153887-Docker-Repository-Configuration-and-Client-Connection

Ваш Nexus предоставляет доступ к HTTP (S) -коннекторам, доступным для CLI Docker через этот синтаксис:

docker pull <nexus-hostname>:<port_nexus_docker_group>/<dockerHubImage>:<officialTag>
docker push <nexus-hostname>:<port_nexus_docker_host>/<yourImage>:<yourTag>

Если вашNexus имеет общедоступный DNS в вашем VPC, очевидно, просто откройте каждый порт в группе безопасности вашего хоста экземпляра EC2 и запустите сервер Nexus, чтобы разрешить входящий сетевой трафик из вашего диапазона IP-адресов / источника CIDR.

Если ваш Nexusимеет частный IP в частной подсети в вашем VPC, просто поместите балансировщик сетевой нагрузки AWS-ELB перед ним в том же VPC в общедоступной подсети с двумя прослушивателями TCP для каждого открытого порта HTTP (S) (nexus-group и nexus-hosted)который перенаправляет две группы целей TCP с типом цели экземпляра на ваш идентификатор экземпляра EC2, на котором размещен ваш сервер nexus, это перенаправит сетевой трафик с вашего публичного DNS на ваш ELB, а затем на ваш экземпляр Nexus EC2.

Обратите внимание, что мы не используем AWS-ELB Application Load Balancer, потому что он работает только с прослушивателями HTTP, а Docker не поддерживает использование контекста для указания пути к хранилищу при запуске Docker CLI с помощьюпо умолчанию это HTTP (S), и для всех них есть промежуточный вызов с шаблоном URL Path / v2 / *.

После правильной настройки и настройки вы сможете войти в систему, вытянуть и отправить изображения на вашвнутренний репозиторий 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
}
...