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?
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"
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.
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
}
où 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.
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.
systemd
conf pour DockerSudo 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
/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"
docker
Rechargez la configuration remplacée et redémarrez docker
comme suit
Sudo systemctl daemon-reload
Sudo systemctl restart docker