Fügen Sie Docker eine unsichere Registrierung hinzu

106

Ich habe ein Docker 1.12 unter CentOS. Ich versuche, eine unsichere Registrierung hinzuzufügen, und die in der Dokumentation genannten Dinge funktionieren einfach nicht. Das System verwendet, systemdalso habe ich eine /etc/systemd/system/docker.service.d/50-insecure-registry.confDatei erstellt.

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

Nach dem Laden des Daemons und dem Neustart des Docker-Dienstes zeigt systemd an, dass die Umgebungsvariable vorhanden ist

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

Aber wenn ich laufe, docker infosehe ich nicht, dass die unsichere Registrierung hinzugefügt wurde

$ 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

Das Verschieben von Bildern hostaneme.cloudapp.netschlägt fehl

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

Gibt es etwas, das getan werden könnte? Vermisse ich etwas

AKTUALISIEREN

Das Problem wurde behoben, indem eine Datei /etc/docker/daemon.jsonmit folgendem Inhalt hinzugefügt wurde

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

Und dann Docker neu starten

sudo systemctl daemon-reload
sudo systemctl restart docker

Danach hostname.cloudapp.net:500funktioniert die unsichere Registrierung .

EvgeniySharapov
quelle
4
Während Sie in diesem Fall von jemandem geschlagen wurden (nachdem Sie eine großzügige Nachfrist erhalten haben), wäre dies ein hervorragender Fall für eine Selbstantwort gewesen.
BlackVegetable
2
Ausgezeichnet! Ich hatte diese Fehlermeldung während "oc cluster up" mit Openshift javamonamour.org/2017/12/docker-insecure-registry.html und Ihr Fix hat es gelöst!
Pierluigi Vernetto
2
Ich weiß, dass Sie dies in Bezug auf CentOS in Ihrer Frage ausdrücklich angefordert haben, aber für jeden, der hier landet und nach einer MacOS-Lösung sucht, wie ich es getan habe, kann dies jetzt über die GUI erfolgen, wie in der Antwort auf diese Frage erwähnt .
Anotherdave

Antworten:

133

(Antwort von Frage kopieren)

Fügen Sie die Datei /etc/docker/daemon.jsonmit dem folgenden Inhalt hinzu, um eine unsichere Docker-Registrierung hinzuzufügen :

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

und starten Sie Docker neu.

Matt Hulse
quelle
3
Ich glaube, das ist die richtige Lösung für Debian-Likes. Auf Red Hat-Likes möchten Sie es /etc/sysconfig/dockerals eine der Optionen hinzufügen , z. B. aus einer Openshift-Installation: OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' Auf Suse-Likes weiß ich nicht.
Erikbwork
In DigitalOcean glaubt das 1-Klick-Docker-Image immer noch, DOCKER_OPTS im Vergleich zur daemon.jsonDateiversion zu verwenden. Vielen Dank!
Eric Pugh
@erikbwork Unter Fedora 28 mit Docker 1.13.1 aus den Standardpaket-Repos /etc/docker/daemon.jsonfunktioniert der Ansatz mit einwandfrei .
Anothernode
7
Docker kann nach dem Erstellen dieser daemon.json nicht neu gestartet werden und zeigt Fehler an: 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
Danke, es funktioniert. Im Mai ohne Port, weil Port 80 {"unsichere Registrierungen": ["hostname.cloudapp.net"]}
Hernaldo Gonzalez
16

Das Erstellen der Datei /etc/docker/daemon.json und das Hinzufügen des folgenden Inhalts sowie das anschließende Neustarten des Dockers unter CentOS 7 haben das Problem behoben.

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

Die Lösung mit dem /etc/docker/daemon.json Datei hat bei Ubuntu bei mir nicht funktioniert.

Ich konnte unsichere Docker-Registrierungen unter Ubuntu konfigurieren, indem ich dem Docker-Dämon in der /etc/default/dockerDatei Befehlszeilenoptionen zur Verfügung stellte , z.

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

Auf die gleiche Weise können Sie benutzerdefinierte Verzeichnisse für Docker-Images und Volumes-Speicher, Standard-DNS-Server usw. konfigurieren.

Nach dem Neustart des Docker-Dämons (nach der Ausführung sudo service docker restart) wird beim Ausführen docker infoFolgendes angezeigt:

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

Für mich bestand die Lösung darin, die Registrierung hier hinzuzufügen:

/ etc / sysconfig / docker-registries

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

Wenn Sie bereits eine config.json-Datei haben, sollte die endgültige Datei ungefähr so ​​aussehen ... Hier registry.myprivate.comist die, die mir Probleme bereitete .

{ "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
quelle