Docker registry private
... / Docker registry private
BMPCreated with Sketch.BMPZIPCreated with Sketch.ZIPXLSCreated with Sketch.XLSTXTCreated with Sketch.TXTPPTCreated with Sketch.PPTPNGCreated with Sketch.PNGPDFCreated with Sketch.PDFJPGCreated with Sketch.JPGGIFCreated with Sketch.GIFDOCCreated with Sketch.DOC Error Created with Sketch.
question

Docker registry private

Par
dgoujard
Créé le 2016-10-13 07:26:05 (edited on 2024-09-04 11:26:08) dans Conteneurs et Orchestration

Comment faire pour utiliser un registry docker avec authentification ?
D'aprés la documentation marathon il faut envoyé un tar.gz avec les credentials dedans https://mesosphere.github.io/marathon/docs/native-docker-private-registry.html mais cela n'est pas possible dans l'offre "Containers" OVH.

Peut être mettre le fichier sur Object Storage avec un lien signé avec date d'expiration ? C'est pas très propre comme solution.


1 réponse ( Latest reply on 2017-01-23 09:43:38 Par
Devatoria
)

Hello !

L'utilisation d'une registry Docker privée (avec auth) n'est pas encore disponible sur notre offre mais le sera d'ici peu. De plus, une registry Docker OVH sera prochainement disponible (disposant elle aussi d'une authentification, et d'un espace privé permettant d'y stocker ses images).

Pour ton information, en effet, il est nécessaire de déposer une archive TAR contenant le fichier JSON produit par la commande docker login sur les hosts.

Bonjour,

Je suis aussi intéressé pour faire fonctionner ma registry privée (hébergée sur un VPS ovh) avec authentification.

Pour le moment j'ai désactivé l'authentification dans mon reverse proxy (nginx) pour les requêtes provenant du LB (docker-XXXX-1.lb.13.containers.ovh.net3.containers.ovh.net)

Voilà la conf Nginx si jamais cela intéresse quelqu'un, le temps qu'une solution avec authentification soit possible:

server {
listen 80;
server_name 1registry.domain.com;registry.domain.com;
return 301 https://$server_name$request_uri;
}

server {
listen 443 ssl;
server_name 1registry.domain.com;registry.domain.com;

ssl_certificate /etc/letsencrypt/live/1registry.domain.com/fullchain.pem;registry.domain.com/fullchain.pem;
ssl_certificate_key /etc/letsencrypt/live/1registry.domain.com/privkey.pem;registry.domain.com/privkey.pem;

ssl_dhparam /etc/pki/tls/private/dhparams.pem;

ssl_protocols TLSv1 TLSv1.1 TLSv1.2;
ssl_ciphers 'EECDH+AESGCM:EDH+AESGCM:AES256+EECDH:AES256+EDH';
ssl_prefer_server_ciphers On;
ssl_session_cache shared:SSL:10m;

ssl_stapling on;
ssl_stapling_verify on;
resolver 8.8.8.8 8.8.4.4 valid=300s;
resolver_timeout 5s;

proxy_set_header Host $http_host;
proxy_set_header X-Real-IP $remote_addr;
proxy_set_header X-Forwarded-For $proxy_add_x_forwarded_for;
proxy_set_header X-Forwarded-Proto $scheme;
proxy_read_timeout 900;

add_header Strict-Transport-Security "max-age=15552000" always;
add_header X-Frame-Options "DENY" always;

location ~ ^/(.*) {
auth_basic "Restricted";
auth_basic_user_file /etc/nginx/docker-registry.htpasswd;
satisfy any;
allow /32;
deny all;
proxy_pass http://127.0.0.1:5000/$1;
}
}

Merci pour l'astuce, pour info et pour les futurs visiteurs j'ai réussi à déployé via API en utilisant un registry privé

Requéte post sur /apps avec en payload
> {
> "id": "/testapi",
> "instances": 1,
> "cpus": 0.5,
> "disk": 0,
> "mem": 50,
> "backoffFactor": 1.15,
> "backoffSeconds": 1,
> "container": {
> "docker": {
> "forcePullImage": false,
> "image": "mon nom d'image",
> "network": "BRIDGE",
> "portMappings": [
> {
> "containerPort": 80,
> "hostPort": 0,
> "protocol": "tcp",
> "servicePort": 10023 (a incrémenter entre chaque nouveau service)
> }
> ],
> "privileged": false
> },
> "type": "DOCKER",
> "volumes": []
> },
> "maxLaunchDelaySeconds": 600,
> "uris": [
> "url du tar.gz contenant l'authentification du registry"
> ]
> }

Merci de partager ce genre d'astuces!

@dgoujard, pour info, tu peux laisser le servicePort à 0, et marathon se chargera d'en trouver un disponible.

Pour info, on est en train de bosser sur le fait de pouvoir s'authentifier sur une registry existante via un jeu de credentials que vous uploadez chez nous via l'API OVH. La feature devrait être disponible la semaine prochaine si tout va bien.

La registry authentifiée OVH est aussi dans les cartons mais arrivera un peu plus tard.

Ok, la feature qui vous permet de faire un appel API chez nous pour uploader des credentials vers n'importe quelle registry privée (voire plusieurs sets de credentials), et que ces credentials soient utilisées par marathon au docker pull est prête.

Tout ce qu'il nous reste à faire est d'ajouter ces appels API sur l'API OVH :)

C'est en prod! Vous pouvez ajouter des credentials vers des registry privées, via l'APIv6 ou le https://www.ovh.com/manager/sunrise/containers/index.html#/containers manager sunrise.
Une fois les identifiants registry ajoutés dans l'interface et déployés, vos slaves seront aptes a puller des images depuis cette registry privée.

Pour récupérer ces credentials et être sûr de l'URL de la registry, connectez vous sur une machine sur laquelle vous avez déjà un accès sur cette registry, et affichez le fichier de config de docker:
```
$ cat ~/.docker/config.json
{
"auths": {
"https://index.docker.io/v1/": // registryUrl
{
"auth": "usernameandpasswordinbase64==",
"email": ""
}
}
}
```

La documentation de marathon précise qu'il vous faudra ajouter un lien public vers un fichier `.tar.gz` contenant vos identifiants, dans le champ `uris` du `marathon.json`. Nous faisons tout ça pour vous (sauf que le lien est un path local, non un lien public), du coup, vous n'avez **rien** n'à faire de plus pour bénéficier de cette feature.

Bonjour à tous,

C'est avec un grand plaisir que la team Containers vous présente leur nouveau produit : OVH Docker Registry.

Ce nouveau service, en beta, vous permettra de bénéficier d'une registry docker avec une gestion fine des droit d'accès sur vos images. Image publique ou privée, peu importe, à vous de décider !

Venez tester le service : https://www.runabove.com/ovh-docker-registry.xml

N'hésitez pas à nous faire des feedbacks !

L'Equipe Containers.

Les réponses sont actuellement désactivées pour cette question.