Utilisation du registre privé hébergé sur docker
Je suis l'hébergement de mon propre menu fixe-registre dans un conteneur docker. Il est mené par nginx cours d'exécution dans un récipient séparé pour ajouter l'authentification basique. La vérification de la _ping routes, je peux voir que nginx est de routage de façon appropriée. Lors de l'appel de docker login
de boot2docker (sur Mac OSX), j'obtiens cette erreur:
FATA[0003] la réponse d'Erreur de démon: registre Invalides de point de terminaison https://www.example.com:8080/v1/: Obtenir https://www.example.com:8080/v1/_ping: x509: certificat signé par une autorité inconnue. Si ce registre ne supporte que le protocole HTTP ou HTTPS avec un certificat d'autorité de certification inconnue, s'il vous plaît ajouter
--insecure-registry www.example.com:8080
le démon de son argumentation. Dans le cas de HTTPS, si vous avez accès à la greffe du certificat d'autorité de certification, pas besoin pour le drapeau, il suffit de placer le certificat d'autorité de certification à /etc/docker/certs.d/www.exemple.com:8080/ca.crt
Ce qui est étrange parce que c'est valide CA SSL cert. J'ai essayé d'ajouter --insecure-registry
EXTRA-ARGS conformément à ces instructions: https://github.com/boot2docker/boot2docker#insecure-registry mais au départ, le "profil" le fichier n'existe pas. Si je le crée, et ajouter
EXTRA_ARGS="--insecure-registry www.example.com:8080"
Je ne vois pas d'amélioration. J'ai voulu isoler l'exemple et donc essayé docker login
à partir d'une machine virtuelle ubuntu (pas boot2docker). Maintenant j'ai une autre erreur:
Error response from daemon:
Le panneau de registre est géré directement par le public hub, par exemple
docker run -d -p 5000:5000 registry
(Notez que nginx itinéraires de 8080 à 5000). Toute aide et/ou de ressources pour vous aider à déboguer ce serait bien apprécié.
Mise à JOUR
J'étais à la recherche d'un guide pour aider de façon exhaustive résoudre ce problème. Plus précisément:
- Créer un registre privé
- Sécuriser le registre avec le basic Auth
- Utiliser le registre de boot2docker
J'ai créé la base de registre et de tests en local, ça fonctionne. J'ai obtenu le registre avec nginx l'ajout de l'authentification basique.
Le problème, c'est maintenant fait à l'aide du registre à partir de deux types de clients:
1) Non boot2docker client.
L'une des réponses ci-dessous ont contribué à cette. J'ai ajouté --l'insécurité-indicateur de registre des options dans /etc/default/docker et maintenant je peux parler à ma télécommande panneau de registre.
Cependant, ce n'est pas compatible avec auth que le panneau de connexion obtient une erreur:
2015/01/15 21:33:57 HTTP code 401, Docker will not send auth headers over HTTP.
Donc, si je veux utiliser auth je vais avoir besoin d'utiliser le protocole HTTPS. J'ai déjà ce serveur sert plus de HTTPS, mais cela ne fonctionne pas si je l'ai mis --l'insécurité-registre. Il semble y avoir un certificat de confiance, que je suis persuadé que je peux résoudre sur la non-boot2docker mais..
2) Pour un boot2docker client, je ne peux pas obtenir-l'insécurité-registre de travail ou de certificats de confiance?
Mise à JOUR 2
Suivantes cette pile d'échange question, j'ai réussi à ajouter le ca à ma machine virtuelle ubuntu et je peux maintenant utiliser de non boot2docker client. Cependant, il ya encore beaucoup de comportement étrange.
Même si mon actuel de l'utilisateur est un membre de l'docker groupe (donc je n'ai pas d'utiliser sudo) j'ai maintenant d'utiliser sudo ou j'obtiens l'erreur suivante lorsque vous essayez de vous connecter ou de traction de mon privé de registre
user@ubuntu:~$ docker login example.com:8080
WARNING: open /home/parallels/.dockercfg: permission denied
parallels@ubuntu:~$ docker pull example.com:8080/hw:1
WARNING: open /home/parallels/.dockercfg: permission denied
Et lors de l'exécution de conteneurs tiré de mon privé de registre pour la première fois, j'ai de les spécifier par l'ID de l'image - pas de leur nom.
source d'informationauteur ConfusedNoob
Vous devez vous connecter pour publier un commentaire.
Modifier le docker fichier
Ajouter le
DOCKER_OPTS
De redémarrer le panneau de service
Exécutez la commande suivante:
Docker version > 1.3.1 communique via le protocole HTTPS par défaut lors de la connexion à docker registre
Si vous utilisez Nginx pour proxy_pass pour le port 5000, où le panneau de registre est à l'écoute, vous devrez fermer le panneau du client connexion SSL pour docker registre à webserver/LB (Nginx dans ce cas). Pour vérifier si Nginx est appelé à disparaître connexion SSL bien utiliser cURL https://www.example.com:8081/something 8081 est un autre port pour le test SSL cert.
Si vous n'avez pas de soins si votre docker client se connecte au registre sur HTTP et non HTTPS, ajouter
OPTIONS="--l'insécurité-registre http://www.example.com:8080"
dans /etc/sysconfig/docker (ou l'équivalent dans d'autres distributions) et de redémarrer le panneau de service.
Espère que cela aide.
De menu fixe de la version 1.3.1, si votre base de registre ne prend pas en charge le protocole HTTPS, vous devez l'ajouter comme une insécurité de registre. Pour boot2docker, c'est un peu plus compliqué que d'habitude. Voir: https://github.com/boot2docker/boot2docker#insecure-registry
Les commandes appropriées sont:
Si vous souhaitez ajouter des certificats SSL pour les boot2docker exemple, ça va être quelque chose de similaire (boot2docker ssh suivie par sudo).
Pour ubuntu, vous devez modifier le fichier /etc/default/docker
Pour rehl, veuillez modifier le fichier /etc/sysconfig/docker
Registre une clé SSL de https://letsencrypt.org/ Si vous avez besoin de plus d'instructions, reportez-vous ce lien.
Activer SSL pour nginx. Attention à la partie SSL dans le code ci-dessous, d'après le registre de la clé SSL, vous avez
fullchain.pem
privkey.pem
dhparam.pem
de l'utiliser pour nginx pour activer le protocole SSL.`
Il résout mon problème, il espère qu'il vous aider.
Essayez d'exécuter le démon avec la args:
au lieu de
EXTRA_ARGS