web-dev-qa-db-fra.com

Docker - Impossible de transférer une image dans un registre privé

J'ai créé mon propre registre privé sur mon serveur en extrayant et en exécutant l'image du registre. 

Sudo docker run -d -p 5000:5000 registry

Après quoi, j’ai essayé de marquer une image simple et de la transmettre au serveur.

Sudo docker tag ubuntu:latest localhost:5000/myprivateubuntu

Et j'ai reçu cette erreur:

Error: Invalid registry endpoint ... Get ... If this private registry supports only HTTP or HTTPS with an unknown CA certificate, please add '--insecure-registry localhost:5000' to the daemon's arguments. In the case of HTTPS, if you have access to the registry's CA certificate, no need for the flag; simply place the CA certificate at /etc/docker/certs.d/localhost:5000/ca.crt

De toute façon savoir quel est le problème?

12
Hans

arrêtez le service.

Sudo service docker stop

redémarrer le service avec les arguments --insecure-registry:

/usr/bin/docker -d --insecure-registry localhost:5000

ou éditez le fichier /etc/default/docker et ajoutez la ligne suivante:

DOCKER_OPTS="--insecure-registry localhost:5000"
20
cizixs

Définition du registre local non sécurisé dans docker avec proxy:

1) dans Ubuntu, ajoutez l’indicateur suivant --insecure-registry IP: port sous DOCKER_OPTS dans le fichier/etc/default/docker

1.1) configurez la variable d'environnement no_proxy pour contourner l'adresse IP locale/le nom d'hôte/le nom de domaine ... car le proxy peut envoyer un msg interactif ... comme continuer et ce msg intermédiaire confond le client docker et finalement le délai d'expiration ...

1.2) si nom de domaine est configuré ... alors n'oubliez pas de mettre à jour le fichier/etc/hosts si vous n'utilisez pas DNS.

1.3) dans/etc/default/docker, définissez les variables env http_proxy et https_proxy ... car elles permettent de télécharger des images depuis des hubs externes à la société. format http_proxy = http: // nom d'utilisateur: mot de passe @ proxy: port

2) redémarrez le service de menu fixe ... s'il est installé en tant que service, utilisez le redémarrage du service de base Sudo

3) redémarrez le conteneur de registre [Sudo docker run -p 5000: 5000 registry: 2]

4) marquez l’image désirée à l’aide de la balise Sudo docker imageid IP: port/imagename/tagname ifany

5) Appuyez sur l'image ... Sudo docker Appuyez sur ip: port/imagename

6) Si vous voulez extraire l’image d’une autre machine, dites B sans TLS/SSL, appliquez B alors les plages 1, 1.1 et 2. Si ces modifications ne sont pas effectuées sur la machine B ... le transfert échouera.

0
Ragha

Ma solution, construite sur les précédentes.

# docker -v
Docker version 18.09.1, build 4c52b90
# uname -a
Linux Host 4.15.0-43-generic #46~16.04.1-Ubuntu SMP Fri Dec 7 13:31:08 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux

Contenu de mon fichier /etc/docker/daemon.json:

{
    "runtimes": {
        "nvidia": {
            "path": "/usr/bin/nvidia-container-runtime",
            "runtimeArgs": []
        }
    },
    "insecure-registries" : [
        "ipaddress:port"
      ],
    "experimental" : false,
    "debug" : true
}

ipaddress:port est l'adresse IPv4 en pointillés de la machine de registre suivie du port de registre (par exemple, 127.0.0.1:12345). Je n'ai pas eu à préfixer avec http:// ou quelque chose comme ça.

Aucune modification à /etc/default/docker

Et puis j'ai rechargé et redémarré le démon avec:

# Sudo systemctl daemon-reload
# Sudo systemctl restart docker

docker Push au registre non sécurisé fonctionne maintenant.

0
schnee

D'après les commentaires de la réponse acceptée, il semble que la solution ne fonctionne pas pour tous. La solution suivante fonctionne pour moi. 

Créer le fichier de substitution systemd conf pour Docker

Sudo mkdir /etc/systemd/system/docker.service.d
Sudo touch /etc/systemd/system/docker.service.d/docker.conf
Sudo vi /etc/systemd/system/docker.service.d/docker.conf

Ajouter ces lignes et les sauvegarder

[Service]
ExecStart=
ExecStart=/usr/bin/docker daemon -H fd:// $DOCKER_OPTS
EnvironmentFile=-/etc/default/docker

Éditer /etc/default/docker

Sudo vi /etc/default/docker

Ajoutez la ligne suivante et enregistrez-la. Remplacez localhost:5000 par votre nom de domaine de registre et votre port

DOCKER_OPTS="--insecure-registry localhost:5000"

Redémarrez le démon docker

Rechargez la configuration remplacée et redémarrez docker comme suit

Sudo systemctl daemon-reload
Sudo systemctl restart docker 
0
Nur Rony