10
votes

Docker Registry: 2.0 Options de configuration primordiale

Quelqu'un a-t-il essayé d'utiliser des variables d'environnement pour remplacer les options de configuration dans le registre, par exemple si vous devez utiliser S3 Seau comme stockage par exemple. J'ai lu le doc et c'est dit ( https://docs.docker.com/registry/configuration/ ): xxx pré>

J'ai donc essayé cette commande, mais il ne semble pas avoir d'effet lorsque je démarre le registre: p> xxx pré>

dans les journaux i Voir la sortie régulière comme si elle ne prend pas en compte les variables ENV et essayez de vous connecter à S3: P>

root@0a349294f792:/go/src/github.com/docker/distribution# env
REGISTRY_STORAGE_S3_SECRETKEY=*************************
DISTRIBUTION_DIR=/go/src/github.com/docker/distribution
GOLANG_VERSION=1.4.2
HOSTNAME=0a349294f792
REGISTRY_STORAGE_S3_BUCKET=itmcc-docker-registry-backend
PATH=/go/bin:/usr/src/go/bin:/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
PWD=/go/src/github.com/docker/distribution
REGISTRY_STORAGE_S3_REGION=us-east-1
SHLVL=1
HOME=/root
GOPATH=/go/src/github.com/docker/distribution/Godeps/_workspace:/go
REGISTRY_STORAGE_S3_ACCESSKEY=*************************
_=/usr/bin/env
root@0a349294f792:/go/src/github.com/docker/distribution#


2 commentaires

Pouvez-vous s'il vous plaît Docker Exec -it MyContainer / Bin / Bash (ou quel que soit le nom de votre conteneur) et vider le contenu de env ici? Je suis capable d'injecter des informations d'identification AWS S3 via des variables d'environnement.


S'il vous plaît voir op sous "Modifier" (dernière section)


3 Réponses :


3
votes

Je charge le chargement de l'accès et de Secretkey via des variables d'environnement dans mon Docker Exécutez la commande . Cependant, je spécifie mon nom de godet et mon région dans le fichier de configuration et, dans le processus de recherche de solutions à votre problème, il semble que vous devez spécifier la région et le nom du godet dans le fichier de configuration. Chaque fois que j'essaie de les spécifier dans les variables d'environnement dans ma commande docker exécuter , je reçois des erreurs et le conteneur ne démarre pas. Je vous suggère de charger ces informations via le fichier de configuration (et de déposer ces indicateurs de votre Docker Exécutez COMMAND) et spécifiez votre AccèsKey et SecretKey via des variables d'environnement comme vous l'êtes. J'ai passé un peu de temps à creuser à la source pour obtenir des informations sur la raison pour laquelle cela ne fonctionne pas comme si nous pensons que cela devrait, mais n'a rien rencontré vraiment utile. Je pense que ce doit être quelque chose qui aws S3 n'aime pas, mais je n'essayais pas d'essayer de perdre la lumière sur cela puisqu'il fonctionne pour moi dans la configuration ci-dessus. Bonne chance!

PS: En ce qui concerne votre accès iam, Il y a quelques commentaires dans la source qui pourrait vous aider à vous donner une idée de ce à quoi s'attendre.


7 commentaires

Juste pour confirmer - lorsque vous dites spécifier le nom du fichier de configuration, cela signifie que je dois construire l'image du DockerFile? Sur une autre note - j'ai essayé de simplement modifier des options de configuration et de construire le dockerfile. Je n'aurais besoin que d'ajouter une région et un nom de gonflement et laissé l'accès et la clé secrète vide parce que j'ai joint un rôle IAM avec accès au godet. Je suppose que le processus est toujours un peu dans les premières étapes de Reg 2.0, car vous devez construire l'image juste pour spécifier différentes options de configuration.


Pour être honnête, je téléchargerais le Distribution Repo et construire votre propre image de registre à partir du Dockerfile fourni dans le racine du projet. C'est ce qui est recommandé de toute façon. Mais surtout, il vous permet d'ajouter un volume au conteneur résultant dans lequel vous pouvez placer votre fichier config.yml. C'est ce que j'ai fait pour que le registre fonctionne (depuis que l'utilisation de l'image de registre Stock V2 était un mal de tête pour moi pour des raisons de configuration). J'espère que je n'ai pas été trop déroutant avec cette suggestion!


Et oui, totalement, le registre v2 est de la branche-fessée-nouvelle. Comme vous le savez probablement déjà, son API est plutôt nue versus v1, mais j'ai eu beaucoup moins de problèmes avec V2 déjà que je n'ai pas essayé d'obtenir un registre V1 de travailler.


Donc, pour être clair, je modifie la ligne cmd de la ligne DockerFile vers cmd ["/registry/config.yml"] , puis je ajoute - v / var / docker / docker-registre / configuration: / registre à la commande docker exécuter . Ensuite, je pose mon config.yml dans le répertoire / var / docker / config , dans lequel le registre v2 va lire à partir du moment où vous en commençant après avoir construit votre Conteneur de registre V2 du nouveau DockerFile modifié. Faites-moi savoir si cela est déroutant.


Merci d'avoir participé plus en détail L0J1K, qui semble définitivement une approche meilleure puis la construction du dockerfile, du moins à des fins d'automatisation.


Je suppose que je dois toujours construire le dockerfile, mais en fait, je viens de lire un seul fichier, de cette façon, vous n'avez pas à remplacer la CMD DockerFile car je pensais que vous ne vouliez pas écraser d'autres fichiers dans ce répertoire. docs.docker.com/serguide/dockervolumes (Montez un fichier hôte sous forme de volume de données)


Ouais, absolument! Montez-la de cette façon si vous préférez. Je l'ai fait mon chemin parce que c'est juste mon habitude de le faire de cette façon. Si cela vous convient de monter le fichier config.yml de cette façon, allez-y.



7
votes

Essayez d'ajouter -e registry_storage = S3 dans la commande docker exécuter . Ceci écrase les configurations de système de fichiers par défaut par vide.

Détail: https://github.com/docker/distribution/blob/master/docs /configuration.md > Options de configuration de remplacement> Note


0 commentaires

18
votes

La commande complète qui fonctionne à partir d'une commande docker exécuter est la suivante: xxx

notez l'ajout du registry_storage = S3 variable d'environnement.

Ils indiquent à cela dans le Documents de registre :

REMARQUE: Si une variable d'environnement change une valeur de carte dans une chaîne, tels que le remplacement du type de pilote de stockage avec Registry_storage = système de fichiers, puis tous les sous-champs seront effacés. Comme telle, spécifier le type de stockage dans l'environnement supprimera tout Paramètres liés à l'ancienne configuration de stockage.


2 commentaires

Sur AWS EC2, vous pouvez omettre les clés d'accès et secrètes si vous attribuez votre instance EC2 un rôle IAM.


Bon conseil, @tedzlatanov! Aussi - je devrais mentionner à quiconque lisant - vous pouvez (et devrait) utiliser un nouvel utilisateur IAM pour cela. Si vous utilisez IAM, vous pouvez toujours utiliser des clés d'accès et des clés secrètes - mais il est bon de savoir qu'il y a des cas d'utilisation où vous pouvez les omettre!