Dodaj niezabezpieczony rejestr do platformy Docker

107

Mam docker 1.12 działający na CentOS. Próbuję dodać do niego niezabezpieczony rejestr, a rzeczy wymienione w dokumentacji po prostu nie działają. System używa, systemdwięc utworzyłem /etc/systemd/system/docker.service.d/50-insecure-registry.confplik.

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

Po załadowaniu demona i ponownym uruchomieniu usługi docker, systemd pokazuje, że zmienna środowiskowa tam jest

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

Ale kiedy uruchamiam docker info, nie widzę dodanego niezabezpieczonego rejestru

$ 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

Przesyłanie obrazów do hostaneme.cloudapp.netniepowodzeń z

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

Czy jest coś, co można zrobić? Czy coś mi brakuje?

AKTUALIZACJA

Rozwiązano problem, dodając plik /etc/docker/daemon.jsonz następującą zawartością

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

Następnie uruchom ponownie docker

sudo systemctl daemon-reload
sudo systemctl restart docker

Po tym niezabezpieczonym rejestrze hostname.cloudapp.net:500działa.

EvgeniySharapov
źródło
4
Chociaż w tym przypadku ktoś cię pobił (po udzieleniu hojnego okresu karencji), byłby to doskonały argument na samodzielną odpowiedź.
BlackVegetable,
2
doskonały! Otrzymałem ten komunikat o błędzie, gdy „oc cluster up” z Openshift javamonamour.org/2017/12/docker-insecure-registry.html i Twoja poprawka rozwiązała problem!
Pierluigi Vernetto
2
Wiem, że w swoim pytaniu wyraźnie prosiłeś o to w odniesieniu do CentOS, ale każdemu, kto wyląduje tutaj, szukając rozwiązania macOS, takiego jak ja, można to teraz zrobić za pośrednictwem GUI, jak wspomniano w odpowiedzi na to pytanie .
anotherdave

Odpowiedzi:

135

(Kopiowanie odpowiedzi z pytania)

Aby dodać niezabezpieczony rejestr Dockera, dodaj plik /etc/docker/daemon.jsono następującej zawartości:

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

a następnie uruchom ponownie docker.

Matt Hulse
źródło
3
Uważam, że to właściwe rozwiązanie w przypadku polubień debiana. Na Red Hat lubi, do którego chcesz dodać go /etc/sysconfig/dockerjako jedną z opcji, np. Z instalacji Openshift: OPTIONS='--insecure-registry=172.30.0.0/16 --others [...]' Na Suse-like, nie wiem.
erikbwork
W DigitalOcean obraz Dockera z 1 kliknięciem nadal uważa, że ​​używa DOCKER_OPTS w porównaniu z daemon.jsonwersją pliku. Dzięki!
Eric Pugh,
@erikbwork W Fedorze 28 z Docker 1.13.1 z domyślnych repozytoriów pakietów, podejście z /etc/docker/daemon.jsondziała dobrze.
anothernode
7
nie można zrestartować dockera po utworzeniu tego daemon.json, pokazując błąd: 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
Dzięki, to działa. W przypadku może bez portu, ponieważ se port 80 {"insecure-registries": ["hostname.cloudapp.net"]}
Hernaldo Gonzalez
16

Utworzenie pliku /etc/docker/daemon.json i dodanie poniższej zawartości, a następnie ponowne uruchomienie dockera w CentOS 7 rozwiązało problem.

{
    "insecure-registries" : [ "hostname.cloudapp.net:5000" ]
}
Słoneczny
źródło
12

Rozwiązanie z /etc/docker/daemon.jsonplikiem nie działało dla mnie na Ubuntu.

Udało mi się skonfigurować niezabezpieczone rejestry Dockera na Ubuntu, podając opcje wiersza poleceń do demona Dockera w /etc/default/dockerpliku, np .:

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

W ten sam sposób można skonfigurować katalog niestandardowy dla obrazów platformy Docker i magazynu woluminów, domyślnych serwerów DNS itp.

Teraz, po ponownym uruchomieniu demona Dockera (po wykonaniu sudo service docker restart), uruchomienie docker infopokaże:

Insecure Registries:
  a.example.com
  b.example.com
  127.0.0.0/8
Nikita
źródło
1

Dla mnie rozwiązaniem było dodanie rejestru tutaj:

/ etc / sysconfig / docker-registries

DOCKER_REGISTRIES=''
DOCKER_EXTRA_REGISTRIES='--insecure-registry  b.example.com'
user3598726
źródło
0

Jeśli masz już plik config.json, to ostateczny plik powinien wyglądać mniej więcej tak ... Oto registry.myprivate.comten, który sprawiał mi problemy.

{ "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
źródło
0

Zdarzyło mi się napotkać podobny problem po skonfigurowaniu lokalnego wewnętrznego rejestru JFrog Docker Private Registry na Amazon Linux.

Poniższe zrobiłem, aby rozwiązać problem:

Dodano „--insecure-register xx.xx.xx.xx: 8081”, modyfikując zmienną OPTIONS w pliku / etc / sysconfig / docker:

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

Następnie zrestartowałem docker.

Byłem wtedy w stanie zalogować się do lokalnego rejestru docker za pomocą:

docker login -u admin -p password hostname:8081
SK Singh
źródło