Ajouter un registre non sécurisé à Docker

107

J'ai un docker 1.12 fonctionnant sur CentOS. J'essaie d'ajouter un registre non sécurisé et les choses mentionnées dans la documentation ne fonctionnent tout simplement pas. Le système utilise systemddonc j'ai créé un /etc/systemd/system/docker.service.d/50-insecure-registry.conffichier.

$ cat /etc/systemd/system/docker.service.d/50-insecure-registry.conf
[Service]
Environment='DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"'

Après le chargement du démon et le redémarrage du service docker, systemd montre que la variable d'environnement est là

$ sudo systemctl show docker | grep Env
Environment=DOCKER_OPTS=--insecure-registry="hostname.cloudapp.net:5000"

Mais quand je cours, docker infoje ne vois pas ce registre non sécurisé ajouté

$ docker info
........
Registry: https://index.docker.io/v1/
WARNING: bridge-nf-call-iptables is disabled
WARNING: bridge-nf-call-ip6tables is disabled
Insecure Registries:
    127.0.0.0/8

Pousser les images vers hostaneme.cloudapp.netéchoue avec

Pushing application     (hostname.cloudapp.net:5000/application:latest)...
The push refers to a repository     [hostname.cloudapp.net:5000/mozart_application]
ERROR: Get https://hostname.cloudapp.net:5000/v1/_ping: http: server gave HTTP response to HTTPS client

Y a-t-il quelque chose qui pourrait être fait? Est-ce que je manque quelque chose?

METTRE À JOUR

Résolution du problème en ajoutant un fichier /etc/docker/daemon.jsonavec le contenu suivant

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

Et puis redémarrez docker

sudo systemctl daemon-reload
sudo systemctl restart docker

Après que le registre non sécurisé hostname.cloudapp.net:500fonctionne.

EvgeniySharapov
la source
4
Alors que quelqu'un vous a battu dans ce cas (après vous avoir accordé une période de grâce généreuse), cela aurait été un excellent cas pour une auto-réponse.
BlackVegetable
2
excellent! J'ai eu ce message d'erreur alors que "oc cluster up" avec OpenShift javamonamour.org/2017/12/docker-insecure-registry.html et votre correctif l'a résolu!
Pierluigi Vernetto
2
Je sais que vous l'avez explicitement demandé en relation avec CentOS dans votre question, mais pour quiconque atterrit ici à la recherche d'une solution macOS comme je l'ai fait, cela peut être fait via l'interface graphique maintenant, comme mentionné dans la réponse à cette question .
anotherdave

Réponses:

135

(Copie de la réponse à la question)

Pour ajouter un registre Docker non sécurisé, ajoutez le fichier /etc/docker/daemon.jsonavec le contenu suivant:

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}

puis redémarrez le docker.

Matt Hulse
la source
3
Je pense que c'est la bonne solution sur les J'aime Debian. Sur Red Hat aime vous voulez l'ajouter /etc/sysconfig/dockercomme l'une des options, par exemple à partir d'une installation OpenShift: OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' Sur Suse-likes, je ne sais pas.
erikbwork
Sur DigitalOcean, l'image Docker en 1 clic pense toujours utiliser DOCKER_OPTS par rapport à la daemon.jsonversion du fichier. Merci!
Eric Pugh
@erikbwork Sur Fedora 28 avec Docker 1.13.1 à partir des dépôts de packages par défaut, l'approche avec /etc/docker/daemon.jsonfonctionne correctement.
anothernode
7
impossible de redémarrer le docker après avoir créé ce daemon.json, affichant l'erreur: Job for docker.service failed because the control process exited with error code. See "systemctl status docker.service" and "journalctl -xe" for details. @matt
AATHITH RAJENDRAN
Merci, ça marche. En cas de mai sans port parce que le port 80 {"insecure-registries": ["hostname.cloudapp.net"]}
Hernaldo Gonzalez
16

La création du fichier /etc/docker/daemon.json et l'ajout du contenu ci-dessous, puis le redémarrage du docker sur CentOS 7 ont résolu le problème.

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}
Ensoleillé
la source
12

La solution avec le /etc/docker/daemon.jsonfichier n'a pas fonctionné pour moi sur Ubuntu.

J'ai pu configurer des registres non sécurisés de Docker sur Ubuntu en fournissant des options de ligne de commande au démon Docker dans un /etc/default/dockerfichier, par exemple:

# /etc/default/docker    
DOCKER_OPTS="--insecure-registry=a.example.com --insecure-registry=b.example.com"

La même méthode peut être utilisée pour configurer un répertoire personnalisé pour les images Docker et le stockage des volumes, les serveurs DNS par défaut, etc.

Maintenant, après le redémarrage du démon Docker (après l'exécution sudo service docker restart), l'exécution docker infoaffichera:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8
Nikita
la source
1

Pour moi, la solution était d'ajouter le registre ici:

/ etc / sysconfig / docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'
user3598726
la source
0

Si vous avez déjà un fichier config.json alors le fichier final devrait ressembler à quelque chose comme ça ... Voici registry.myprivate.comcelui qui me posait des problèmes.

{ "auths": { "https://index.docker.io/v1/": { "auth": "xxxxxxxxxxxxxxxxxxxx==" }, "registry.myprivate.com": { "auth": "xxxxxxxxxxxxxxxxxxxx=" } }, "HttpHeaders": { "User-Agent": "Docker-Client/19.03.8 (linux)" }, "insecure-registries" : ["registry.myprivate.com"] }

Gajendra D Ambi
la source
0

Il m'est arrivé de rencontrer un type de problème similaire après la configuration du registre privé interne local de JFrog Docker sur Amazon Linux.

Les actions suivantes que j'ai faites pour résoudre le problème:

Ajout de "--insecure-registry xx.xx.xx.xx: 8081" en modifiant la variable OPTIONS dans le fichier / etc / sysconfig / docker:

OPTIONS="--default-ulimit nofile=1024:40961 --insecure-registry hostname:8081"

Puis redémarré le docker.

J'ai ensuite pu me connecter au registre docker local en utilisant:

docker login -u admin -p password hostname:8081
SK Singh
la source