Согласно этой статье:
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
}