Aggiungi registro non sicuro a Docker


107

Ho una finestra mobile 1.12 in esecuzione su CentOS. Sto cercando di aggiungere un registro non sicuro e le cose menzionate nella documentazione semplicemente non funzionano. Il sistema usa systemdquindi ho creato un /etc/systemd/system/docker.service.d/50-insecure-registry.conffile.

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

Dopo aver caricato il daemon e riavviato il servizio docker, systemd mostra che la variabile di ambiente è presente

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

Ma quando corro docker infonon vedo aggiunto quel registro insicuro

$ 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

Il push delle immagini su hostaneme.cloudapp.netfallisce con

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

C'è qualcosa che potrebbe essere fatto? Mi sto perdendo qualcosa ?

AGGIORNARE

Risolto il problema aggiungendo un file /etc/docker/daemon.jsoncon il seguente contenuto

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

E quindi riavviare Docker

sudo systemctl daemon-reload
sudo systemctl restart docker

Dopo che il registro insicuro hostname.cloudapp.net:500funziona.


4
Mentre qualcuno ti ha battuto in questo caso (dopo averti concesso un generoso periodo di grazia), questo sarebbe stato un ottimo caso per una risposta personale.
BlackVegetable

2
eccellente! Ho ricevuto questo messaggio di errore mentre "oc cluster up" con Openshift javamonamour.org/2017/12/docker-insecure-registry.html e la tua correzione lo ha risolto!
Pierluigi Vernetto

2
So che lo hai chiesto esplicitamente in relazione a CentOS nella tua domanda, ma a chiunque arrivi qui alla ricerca di una soluzione macOS come ho fatto io, ora può essere fatto tramite la GUI, come menzionato nella risposta a questa domanda .
un'altra data il

Risposte:


135

(Copiando la risposta dalla domanda)

Per aggiungere un registro Docker non sicuro, aggiungi il file /etc/docker/daemon.jsoncon il seguente contenuto:

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

e quindi riavviare Docker.


3
Credo che questa sia la soluzione giusta su Debian-like. Su Red Hat piace a cui vuoi aggiungerlo /etc/sysconfig/dockercome una delle opzioni, ad esempio da un'installazione di Openshift: OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' Su Suse-like non lo so.
erikbwork

Su DigitalOcean, l'immagine Docker con 1 clic pensa ancora di utilizzare DOCKER_OPTS rispetto alla daemon.jsonversione del file. Grazie!
Eric Pugh

@erikbwork Su Fedora 28 con Docker 1.13.1 dai repository di pacchetti predefiniti, l'approccio con /etc/docker/daemon.jsonfunziona bene.
nodo

7
Impossibile riavviare Docker dopo aver creato questo daemon.json, che mostra l'errore: 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

Grazie, funziona. In alcuni casi senza porta perché se porta 80 {"insecure-registries": ["hostname.cloudapp.net"]}
Hernaldo Gonzalez,

16

La creazione del file /etc/docker/daemon.json e l'aggiunta del contenuto di seguito e quindi il riavvio della finestra mobile su CentOS 7 hanno risolto il problema.

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

12

La soluzione con il /etc/docker/daemon.jsonfile non ha funzionato per me su Ubuntu.

Sono stato in grado di configurare i registri Docker non sicuri su Ubuntu fornendo opzioni della riga di comando al demone Docker nel /etc/default/dockerfile, ad esempio:

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

Lo stesso modo può essere utilizzato per configurare una directory personalizzata per immagini Docker e archiviazione di volumi, server DNS predefiniti, ecc.

Ora, dopo il riavvio del demone Docker (dopo l'esecuzione sudo service docker restart), in esecuzione docker infoverrà visualizzato:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8

1

Per me la soluzione era aggiungere il registro a qui:

/ etc / sysconfig / docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'

0

Se hai già un file config.json, il file finale dovrebbe assomigliare a questo ... Ecco registry.myprivate.comquello che mi dava problemi.

{ "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"] }


0

Mi è capitato di riscontrare un tipo di problema simile dopo aver configurato il registro privato JFrog Docker interno locale su Amazon Linux.

I seguenti che ho fatto per risolvere il problema:

Aggiunto "--insecure-registry xx.xx.xx.xx: 8081" modificando la variabile OPTIONS nel file / etc / sysconfig / docker:

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

Quindi ha riavviato la finestra mobile.

Sono quindi stato in grado di accedere al registro docker locale utilizzando:

docker login -u admin -p password hostname:8081
Utilizzando il nostro sito, riconosci di aver letto e compreso le nostre Informativa sui cookie e Informativa sulla privacy.
Licensed under cc by-sa 3.0 with attribution required.