Nos images Docker expédient des sources fermées, nous devons les stocker dans un endroit sûr, en utilisant notre propre registre Docker privé. Nous recherchons la manière la plus simple de déployer un registre de docker privé avec une couche d'authentification simple .
J'ai trouvé :
shipyard/docker-private-registry
image docker basée sur stackbrew/registre et ajoutant l'authentification de base via Nginx - https://github.com/shipyard/docker-private-registryJe pense utiliser shipyard/docker-private-registry
, mais existe-t-il un autre meilleur moyen?
J'apprends toujours à exécuter et à utiliser Docker, considérez ceci comme une idée:
# Run the registry on the server, allow only localhost connection
docker run -p 127.0.0.1:5000:5000 registry
# On the client, setup ssh tunneling
ssh -N -L 5000:localhost:5000 user@server
Le registre est alors accessible sur localhost: 5000, l'authentification se fait via ssh que vous connaissez et utilisez probablement déjà.
Sources:
Vous pouvez également utiliser un frontal Nginx avec une authentification de base et un certificat SSL.
En ce qui concerne le certificat SSL, j'ai essayé quelques heures pour avoir un certificat auto-signé fonctionnel, mais Docker n'a pas pu travailler avec le registre. Pour résoudre ce problème, j'ai un certificat signé gratuit qui fonctionne parfaitement. (J'ai utilisé StartSSL mais il y en a d'autres). Soyez également prudent lors de la génération du certificat. Si vous souhaitez que le registre s'exécute à l'URL Registry.damienroch.com, vous devez donner cette URL avec le sous-domaine, sinon cela ne fonctionnera pas.
Vous pouvez effectuer toute cette configuration à l'aide de Docker et de mon image nginx-proxy (Voir le README sur Github: https://github.com/zedtux/nginx-proxy Cela signifie que si vous avez installé nginx à l'aide du gestionnaire de packages de distribution, vous le remplacerez par un nginx conteneurisé.
.crt
et .key
fichiers) sur votre serveur dans un dossier (j'utilise /etc/docker/nginx/ssl/
et les noms des certificats sont private-registry.crt
et private-registry.key
)/etc/docker/nginx/htpasswd/
et le nom de fichier est accounts.htpasswd
)/etc/docker/registry/
)Voici un exemple des commandes à exécuter pour les étapes précédentes:
Sudo docker run -d --name nginx -p 80:80 -p 443:443 -v /etc/docker/nginx/ssl/:/etc/nginx/ssl/ -v /var/run/docker.sock:/tmp/docker.sock -v /etc/docker/nginx/htpasswd/:/etc/nginx/htpasswd/ zedtux/nginx-proxy:latest
Sudo docker run -d --name registry -e VIRTUAL_Host=registry.damienroch.com -e MAX_UPLOAD_SIZE=0 -e SSL_FILENAME=private-registry -e HTPASSWD_FILENAME=accounts -e DOCKER_REGISTRY=true -v /etc/docker/registry/data/:/tmp/registry registry
La première ligne démarre nginx et la seconde le registre. Il est important de le faire dans cet ordre.
Lorsque les deux sont opérationnels, vous devriez pouvoir vous connecter avec:
docker login https://registry.damienroch.com
J'ai créé un système presque prêt à l'emploi mais certainement prêt à fonctionner pour exécuter un docker-registry: https://github.com/kwk/docker-registry-setup .
Peut-être que ça aide.
Tout ( Registre , Serveur d'authentification et Le serveur LDAP ) fonctionne dans des conteneurs, ce qui rend les pièces remplaçables dès que vous êtes prêt. La configuration est entièrement configurée pour faciliter le démarrage. Il existe même des certificats de démonstration pour HTTP, mais ils devraient être remplacés à un moment donné.
Si vous ne souhaitez pas l'authentification LDAP mais une authentification statique simple, vous pouvez la désactiver dans auth/config/config.yml
et saisissez votre propre combinaison de noms d'utilisateur et de mots de passe hachés.