J'ai un Dockerfile
qui va être implémenté FROM
l'image d'un registre privé. Je crée ce fichier sans aucun problème avec Docker version 1.12.6, build 78d1802
et docker-compose version 1.8.0, build unknown
, mais sur une autre machine qui a Docker version 17.06.1-ce, build 874a737
et docker-compose version 1.16.1, build 6d1ac21
, les docker-compose build
Retour:
FROM my.private.gitlab.registry:port/image:tag
http://my.private.gitlab.registry:port/v2/docker/image/manifests/tag: denied: access forbidden
docker pull my.private.gitlab.registry:port/image:tag
renvoie la même chose.
Notez que j'ai essayé d'obtenir my.private.registry:port/image:tag
et http://my.private.registry:port/v2/docker/image/manifests/tag
a été capturé.
S'il s'agit d'un registre authentifié, vous devez exécuter docker login <regitsryurl>
sur la machine sur laquelle vous le construisez.
Cela ne doit être effectué qu'une seule fois par hôte. La commande met ensuite en cache l'auth dans un fichier
$ cat ~/.docker/config.json
{
"auths": {
"https://index.docker.io/v1/": {
"auth": "......="
}
}
}
Je remarque que votre schéma d'URL utilise le protocole http - Docker doit être configuré pour autoriser les registres non sécurisés.
Créez ou modifiez votre daemon.json
(requis dans l'un des emplacements suivants):
Linux: /etc/docker/
Les fenêtres: C:\ProgramData\Docker\config\
Avec le contenu:
{
"insecure-registries" : [ "my.private.gitlab.registry:port" ]
}
Redémarrez ensuite Docker (pas seulement la session du terminal) et réessayez.
Une fois connecté avec:
docker login my.private.gitlab.registry:port
Selon la réponse de tarun-lalwani , cela devrait ensuite ajouter l'auth dans la configuration, pour une utilisation future (docker pull
, etc.).
Une connexion n'a pas résolu le problème pour moi. Cela peut être spécifique à Mac, mais juste au cas où: problème Git
Mon commentaire sur la question:
Je rencontre également ce problème.
FROM <insert_private_registry>/test-image:latest
Les deux commandes échouent sans connexion au registre privé (attendu)
$ docker-compose up
Building app
Step 1/2 : FROM <insert_private_registry>/test-image:latest
ERROR: Service 'app' failed to build: Get https://<insert_private_registry>/v2/test-image/manifests/latest: denied: access forbidden
$ docker pull <insert_private_registry>/test-image:latest
Error response from daemon: Get https://<insert_private_registry>/test-image/manifests/latest: denied: access forbidden
Une fois connecté, un docker pull ...
fonctionne tandis que le docker-compose up
ne parvient pas à extraire l'image:
$ docker login <insert_private_registry>
Username: <insert>
Password: <insert>
Login Succeeded
$ docker-compose up
Building app
Step 1/2 : FROM <insert_private_registry>/test-image:latest
ERROR: Service 'app' failed to build: Get https://<insert_private_registry>/v2/test-image/manifests/latest: denied: access forbidden
$ docker pull <insert_private_registry>/test-image:latest
latest: Pulling from <insert_private_image_path>/test-image
...
Status: Downloaded newer image for <insert_private_registry>/test-image:latest
Notre solution de contournement actuelle consiste à extraire explicitement l'image avant d'exécuter les conteneurs docker-compose:
docker pull <insert_private_registry>/test-image:latest
latest: Pulling from <insert_private_image_path>/test-image
...
Status: Downloaded newer image for <insert_private_registry>/test-image:latest
$ docker-compose up
Building app
Step 1/2 : FROM <insert_private_registry>/test-image:latest
...