J'ai deux machines qui utilisent Dockerd. L'une est une boîte Ubunto.18.04 avec la version 18.06.1-ce de docker installée, que je veux utiliser comme un serveur de registre/dépôt de test non sécurisé où la seule façon de l'utiliser est d'utiliser un tunnel SSH sur le port 5000.
L'autre est une station de travail de développement, une boîte Windows 10 "pro" qui a également une instance locale de docker (docker pour Windows version 18.06.1-ce) fonctionnant comme un service sur elle que j'utilise pour construire des images de test.
Jusqu'à présent, je n'arrive pas à faire en sorte que la boîte Windows pousse ou tire de la boîte Ubuntu à travers le tunnel.
Les deux dockers fonctionnent. J'ai ajouté le paramètre de registres non sécurisés sur la station de travail (via l'interface graphique de docker, je n'ai pas pu trouver le paramètre de registres non sécurisés). daemon.json
donc supposez qu'il se trouve dans le registre de Windows ou dans un emplacement caché).
J'ai ajouté localhost:5000 pour tester l'utilisation du tunnel SSHE et Dev2:5000
(temporaire pour ce test a ouvert le port 5000 sur le sous-réseau interne) pour tester une connexion directe sans le tunnel, et a redémarré docker.
Sur la boîte de registre, j'ai suivi l'exemple de la façon d'utiliser un registre privé et j'ai fait ce qui suit pour le tester. J'étais connecté à "Dev2" en tant qu'utilisateur que j'ai ajouté au groupe "docker" qui a aussi le droit d'utiliser le registre privé. sudo
des privilèges. J'ai aussi essayé en tant que Root.
Dev2:> docker pull ubuntu:18.04
# success
Dev2:> docker tag ubuntu:18.04 localhost:5000/testapp:00.01
Dev2:> docker push localhost:5000/testapp/00.01
# success
Dev2:> docker tag ubuntu:18.04 Dev2:5000/testapp:00.02
Dev2:> docker push Dev2:5000/testapp/00.02
# success
Dev2:> docker image rm ubuntu:18.04
# success
Dev2:> docker image ls -a
REPOSITORY TAG IMAGE ID CREATED SIZE
localhost:5000/testapp 00.01 ea4c82dcd15a 40 hours ago 85.8MB
Dev2:5000/testapp 00.02 ea4c82dcd15a 40 hours ago 85.8MB
registry 2 2e2f252f3c88 5 weeks ago 33.3MB
Dev2:> curl http://localhost:5000/v2/_catalog
{"repositories":["testapp"]}
Dev2:> curl http://localhost:5000/v2/testapp/tags/list
{"name":"testapp","tags":["00.01","00.02"]}
Dev2:> curl http://Dev2:5000/v2/_catalog
{"repositories":["testapp"]}
Dev2:> curl http://Dev2:5000/v2/testapp/tags/list
{"name":"testapp","tags":["00.01","00.02"]}
À ce stade, tout semble aller bien. Si je supprime les images sur le docker Dev2 et que je les retire, elles sont extraites du référentiel et ajoutées à nouveau à l'instance du docker.
Maintenant j'essaie de tirer les images dans docker sur la station de travail.
J'exécute un tunnel ssh sur le poste de travail Windows 10 ( Msys version GNU)
workstation:> ssh nyc.livingwork.com -L 5000:localhost:5000 & # this runs and the tunnel workstation
J'essaie également d'utiliser un navigateur (pas de curl ici) avec des URL :
http://Dev2:5000/v2/testapp/tags/list et http://localhost:5000/v2/testapp/tags/list
Et je reçois pour les deux : {"name":"testapp","tags":["00.01","00.02"]}
Le serveur est donc accessible à la fois directement et à travers un tunnel.
Maintenant, j'essaie :
workstation:$ docker pull localhost:5000/testapp:00.01
Error response from daemon: Get http://localhost:5000/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
workstation:> docker pull Dev2:5000/testapp:00.02
Error response from daemon: Get http://Dev2:5000/v2/: net/http: request canceled while waiting for connection (Client.Timeout exceeded while awaiting headers)
Le délai d'attente est d'au moins 30 secondes. Note : si je fais la même chose à partir d'une autre boîte Unix exécutant docker tout fonctionne correctement donc c'est particulier à docker pour Windows fonctionnant sur Windows 10. Pour une raison quelconque, cela échoue.
Je n'ai pas réussi à résoudre ce problème. Il n'y a pas de proxy HTTP dans la chaîne sur les deux machines. Il se trouve sur un sous-réseau local. Tous les autres services du serveur sont accessibles, etc. Le paramètre "insecure-registries" dans le docker Windows de l'interface utilisateur est défini pour les hôtes et les ports.
C'est un bug ? Dans le Docker de Windows 10 ? Cela fonctionne bien depuis une autre boîte Ubuntu.