2014-09-12 6 views
0

J'ai créé mon registre docker privé fonctionnant sur localhost:5000/v1 mais il ne fournit pas d'authentification, Comment avoir un nom d'utilisateur et un mot de passe afin que seuls les utilisateurs autorisés puissent y insérer une image.création de l'utilisateur du registre privé docker

Je suis pas non plus en mesure d'énumérer toutes les images présentes dans le registre privé, tout document dit en cours d'exécution ci-dessous commande liste le localhost:5000/v1/search mais il donne une réponse JSON blanc comme:

{ 
    "num_results": 0, 
    "query": "", 
    "results": [] 
} 

Comment résoudre ce problème?

Merci, Yash

Répondre

1

Une réponse à votre première question: Vous devez utiliser quelque chose comme nginx devant le Registre pour faire l'authentification par mot de passe réel. Il existe des exemples de fichiers de configuration nginx pour pre-1.3.9 nginx et later versions dans le Docker Registry Github repo pour l'encapsulation du registre avec nginx; il y a plus d'informations sur authentication configuration on the nginx wiki.

+0

Salut Merci beaucoup pour la réponse, j'ai jeté un oeil au fichier nginx.conf dans mon registre privé. comment cela aide-t-il ici pour l'authentification? J'ai essayé de créer un compte utilisateur par "docker login ", cela me permet de créer un compte mais je ne suis pas capable de le faire parce que le push et le pull fonctionnent correctement sans nom d'utilisateur ni mot de passe. Serait génial si vous pouvez aider. – priyank

0

Vous pouvez utiliser htpasswd pour configurer une connexion avec l'image du registre dockers. Cependant, je ne crois pas qu'ils aient implémenté une fonction de recherche dans cette image pour le moment. Pour créer un utilisateur, je le script suivant:

#!/bin/sh 

usage() { echo "$0 user"; exit 1; } 

if [ $# -ne 1 ]; then 
    usage 
fi 

user=$1 

cd `dirname $0` 

if [ ! -d "auth" ]; then 
    mkdir -p auth 
fi 

chmod 666 auth/htpasswd 
docker run --rm -it \ 
    -v `pwd`/auth:/auth \ 
    --entrypoint htpasswd registry:2 -B /auth/htpasswd $user 
chmod 444 auth/htpasswd 

Ensuite, pour exécuter le registre, j'utilise le script suivant (dans le même dossier):

#!/bin/sh 

cd `dirname $0` 

docker run -d -p 5000:5000 --restart=always --name registry \ 
    -v `pwd`/certs:/certs:ro \ 
    -v `pwd`/auth/htpasswd:/auth/htpasswd:ro \ 
    -v `pwd`/registry:/var/lib/registry \ 
    -e "REGISTRY_HTTP_TLS_CERTIFICATE=/certs/host-cert.pem" \ 
    -e "REGISTRY_HTTP_TLS_KEY=/certs/host-key.pem" \ 
    -e "REGISTRY_AUTH=htpasswd" \ 
    -e "REGISTRY_AUTH_HTPASSWD_REALM=Registry Realm" \ 
    -e "REGISTRY_AUTH_HTPASSWD_PATH=/auth/htpasswd" \ 
    -e "REGISTRY_STORAGE_FILESYSTEM_ROOTDIRECTORY=/var/lib/registry" \ 
    registry:2 

Notez que je suis aussi à l'aide Certificats TLS dans ci-dessus dans le répertoire certs. Vous pouvez les créer avec les commandes openssl (mêmes que celles utilisées pour sécuriser le socket daemon docker).

Questions connexes