Диспозиция: докер-стек на Docker Desktop (Windows 10) с jenkins-slave, который хочет сделать docker push собранного образа и не может, сообщения:
Get http://nexus:8083/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
и подобное.
Похоже, проблема из-за того, что (и в случае когда) докер на jenkins-slave работает через монтирование docker.sock хоста (как volume) - в результате докер-операции происходят на хосте, и там неизвестен nexus, который известен как сервис внутри докер-сети.
Лечится прописыванием имени хоста докер-реестра (nexus в этом случае) в %system32%/drivers/etc/hosts хоста DockerDesktopVM (винды, то есть).
nexus, порты которого замапены (уже должны быть) на localhost, после обращения изнутри докер-контейнера дженкинс-слейва является в этом смысле localhost'ом тоже -
точно (проверено) работает при тех же портах, прописанных в мэпинге докер-контейнера nexus:
nexus:
image: sonatype/nexus3:3.22.0
volumes:
- nexusvolume:/nexus-data
ports:
- "8081:8081"
- "8083:8083"
- "8082:8082"
(фрагмент docker-compose.yml докер-стека)
То есть, в %system32%/drivers/etc/hosts хостовой винды прописывается:
127.0.0.2 nexus
наверняка, работало бы и 127.0.0.1