Docker registre privé avec miroir
j'ai créé deux dockers. Le premier fournit un registre Docker privé et le second est un miroir du registre officiel Docker:
docker run -d --name registry -v /local/path/to/registry:/registry -e SETTINGS_FLAVOR=local -e STORAGE_PATH=/registry -p 5000:5000 registry
docker run -d --name mirror -v /local/path/to/mirror:/registry -e STORAGE_PATH=/registry -e STANDALONE=false -e MIRROR_SOURCE=https:/registry-1.docker.io -e MIRROR_SOURCE_INDEX=https://index.docker.io -p 5555:5000 registry
maintenant je voudrais combiner les deux. Chaque fois qu'un utilisateur tire images il doit d'abord interroger le registre privé et ensuite le miroir. Et quand les images sont poussés ils ne devraient être poussés que vers le registre privé.
Je n'ai aucune idée de comment cela peut être fait. Toute aide est apprécié.
3 réponses
Vous ne pouvez pas forcer tous panneau de pousser commandes de pousser votre registre. Une des raisons est que vous pouvez avoir n'importe quel nombre de ces registres. Vous devez d'abord dire à docker où pousser en étiquetant l'image (Voir plus bas).
Voici comment vous pouvez configurer les hôtes docker pour qu'ils fonctionnent avec un registre privé et un miroir local.
configuration du Client
supposons que vous exécutez à la fois miroir et registre privé sur (résolvable) hôte appelé dockerstore. Miroir sur le port 5555, Registre sur 5000.
Puis sur client machine(s) vous devez passer des options supplémentaires au démarrage du démon docker. Dans ton cas:
- Ajouter
--registry-mirror=http://dockerstore:5555
dire à daemon de préférer utiliser un miroir local plutôt que dockerhub. source - Ajouter
--insecure-registry dockerstore:5000
pour accéder au registre privé sans configuration supplémentaire. Voir cette réponse - redémarrez docker démon
Utiliser le miroir
lorsque vous tirez une image, la première source sera le miroir local. Vous pouvez le confirmer en exécutant un docker pull, par exemple
docker pull debian
dans la sortie il y aura un message que l'image est tirée de votre mirror - dockerstore:5000
Utilisation du Registre local
pour pousser privé de registre, vous devez d'abord marquez l'image pour être poussé avec plein nom de la base de registre. Assurez-vous que vous avez un point ou deux points dans le première partie de la balise, pour dire à docker que l'image doit être poussée dans un registre privé.
Panneau cherche un "."(domaine de séparateur) ou ":" (port de séparateur) d'apprendre que la première partie du référentiel est un nom de lieu et pas un nom d'utilisateur.
Exemple:
balise 30d39e59ffe2 image as dockerstore: 5000 / myapp: stable
docker tag 30d39e59ffe2 dockerstore:5000/myapp:stable
Push-il privé de registre
docker push dockerstore:5000/myapp:stable
Ensuite, vous pouvez tirer ainsi
docker pull dockerstore:5000/myapp:stable
les noms des dépôts sont censés être global, qui est le référentiel redis
renvoie toujours à L'image officielle de Redis du Docker Hub. Si vous voulez utiliser un registre privé, vous préfixez le nom du dépôt avec le nom du registre par exemple localhost.localdomain:5000/myimage:mytag
.
ainsi quand vous tirez ou poussez, il ira automatiquement au registre pertinent. Le miroir devrait être facile à configurer, il suffit de passer L'URL au démon avec le --registry-mirror=
argument.
ce n'est pas parfait pour les utilisateurs en entreprise, d'où cette (fermée) Docker question.
Juste pour être clair, documentation docker confirme que:
il n'est actuellement pas possible de reproduire un autre registre privé. Seulement la centrale peut être mis en miroir.