Próbuję skonfigurować prywatny rejestr docker za pomocą obrazu pobranego z: https://github.com/docker/docker-registry
Wystarczy uruchomić:
docker run -p 5000:5000 registry
Mogę ściągać / wypychać z / do tego repozytorium tylko z lokalnego hosta, ale jeśli spróbuję uzyskać do niego dostęp z innego komputera (używając adresu prywatnego w tej samej sieci LAN), pojawia się komunikat o błędzie:
*2014/11/03 09:49:04 Error: Invalid registry endpoint https ://10.0.0.26:5000/v1/':
Get https:// 10.0.0.26:5000/v1/_ping: Forbidden. If this private
registry supports only HTTP or HTTPS with an unknown CA certificate,
please add `--insecure-registry 10.0.0.26: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/10.0.0.26:5000/ca.crt*
To, co doprowadza mnie do szału, to fakt, że mogę uzyskać do niego dostęp za pomocą:
curl 10.0.0.26:5000
i / lubcurl 10.0.0.26:5000/v1/search
Nie rozumiem też, gdzie i jak mam przekazać --insecure-registry
flagę.
docker
remote-access
docker-registry
Ofer Eliassaf
źródło
źródło
Odpowiedzi:
OK - znalazłem na to rozwiązanie - po całym dniu kopania.
Dla dockera poniżej 1.12.1:
Okazuje się, że nowa wersja klienta odmawia współpracy z prywatnym rejestrem bez SSL.
Aby to naprawić - demon na komputerze klienckim powinien zostać uruchomiony z flagą niezabezpieczone:
Wystarczy wpisać:
i wtedy
(zamień na
10.0.0.26
swój własny adres IP).Spodziewałbym się, że ludzie z docker dodają tę opcję do wiersza poleceń pull / push ...
Edytuj - alternatywnie - możesz dodać flagę do
DOCKER_OPTS
zmiennej env wewnątrz / etc / default / docker ... i wtedysudo service docker restart
Edytuj ponownie - Wygląda na to, że faceci od dockerów są na tym - i wkrótce nadejdzie poprawka: https://github.com/docker/docker/pull/8935
W przypadku docker 1.12.1:
Proszę postępować zgodnie z odpowiedzią vikas027 (ważne dla centów)
źródło
docker -H tcp://remote-host-ip:5000 images
ale wróciłem z błędem.docker search remote-host-ip:5000/image-name
idocker pull remote-host-ip:5000/image-name
oba działają dobrze. Teraz, jak mam wyświetlić listę obrazów ...--insecure-registry
jest obejściem, a nie rozwiązaniem.To właśnie zadziałało dla mnie w CentOS 7.2 i Docker 1.12.1 (najnowsze na dzień). Mój prywatny rejestr v2 działał
192.168.1.88:5000
, zmień go odpowiednio. Działa to również, jeśli masz wiele rejestrów, po prostu kontynuuj dodawanie--insecure-registry IP:Port
źródło
/lib/systemd/system/docker.service
na Ubuntu 16.04.--insecure-registry
jest obejściem, a nie rozwiązaniem.Edytuj plik konfiguracyjny „/ etc / default / docker”
dodaj linię na końcu pliku
(zastąp adres 192.168.2.170 własnym adresem IP)
i zrestartuj usługę docker
źródło
/etc/init.d/docker
po prostu od razu nie działa na Ubuntu 14.04, co zaskakujące. Ale twoja poprawka to/etc/default/docker
robi.--insecure-registry
jest obejściem, a nie rozwiązaniem.Zauważyłem, że bardzo przydatne są następujące informacje, w których omówiono konfigurację samej usługi Docker. https://docs.docker.com/articles/systemd/
Wraz z tym artykułem na temat polecenia systemctl https://www.digitalocean.com/community/tutorials/how-to-use-systemctl-to-manage-systemd-services-and-units
Użyłem następującej serii poleceń w kontenerze opartym na Centos 7 z obrazem rejestru uzyskanym przez „docker pull register: 2.1.1”
A wewnątrz override.conf dodał następujący.
Zwróć uwagę na pierwszą, pustą, ExecStart = czyści wszystko, co już jest na miejscu, więc pamiętaj, aby dodać wszystko z instrukcji /usr/lib/systemd/system/docker.service ExecStart =, które chcesz zachować.
Jeśli nie podasz opcji -d (demon), pojawi się błąd „Proszę podać tylko jeden -H”.
Po wydaniu następującej serii poleceń widzę moje nadpisania na miejscu.
UWAGA: Informacje zawarte w wierszach Loaded: i Drop-In: w komunikacie o stanie są przydatne do sprawdzania, co się dzieje z działającym wcześniej demonem dockera.
UWAGA: Dalsze wskazówki można znaleźć w pliku Loaded: docker.service dla pliku EnvironmentFile =.
źródło
--insecure-registry
jest obejściem, a nie rozwiązaniem.Dobrze. Oto jak to działa. Jeśli widzisz ten błąd w Docker 1.3.2 lub nowszym, zrób to
iść do
/etc/sysconfig/docker
i biegnij
sudo service docker restart
źródło
--insecure-registry
jest obejściem, a nie rozwiązaniem.użyj następującego polecenia, zastępując {YOUR_REGISTRY} swoim rejestrem
źródło
boot2docker
to niezależny zestaw narzędzi nieistotny w kontekście pytania.--insecure-registry
jest obejściem, a nie rozwiązaniem.edytuj plik docker.service, dodaj flagę --insecure-register xxxx po -d, zrestartuj docker
to jest jedyna rzecz, która działała dla mnie, DOCKER_OPTS nie miał żadnego efektu
źródło
--insecure-registry
jest obejściem, a nie rozwiązaniem.Docker 1.12.1
W przypadku CentOS 7.2
Dla ubuntu 16.04
Wygląda na to, że opcja --insecure-register może być używana zarówno z, jak i bez znaku "=" między nią a identyfikatorem rejestru.
źródło
--insecure-registry
jest obejściem, a nie rozwiązaniem.Zauważyłem, że wersja klienta dockera i wersja dockera rejestru muszą do siebie pasować, w przeciwnym razie napotkasz problemy z łącznością, mimo że wszystko jest na swoim miejscu.
źródło
Rozwiązanie dwuetapowe (bez
--insecure-registry
):/etc/docker/certs.d/$HOSTNAME/
kataloguTeraz doker będzie ufał certyfikatowi z podpisem własnym.
źródło
Jest to oparte na odpowiedzi z vikas027 na Centos 7 i Docker 1.12
Ponieważ korzystam z proxy, moje pełne rozwiązanie było ...
/etc/systemd/system/docker.service.d/http-proxy.conf
/usr/lib/systemd/system/docker.service
i nie zapomnij zrestartować :)
źródło
--insecure-registry
jest obejściem, a nie rozwiązaniem.Ustawianie niezabezpieczonego lokalnego rejestru w dockerze wraz z proxy:
1) w Ubuntu dodaj następującą flagę --insecure-register IP: port pod DOCKER_OPTS w pliku / etc / default / docker
1.1) skonfiguruj zmienną env no_proxy, aby ominęła lokalny adres IP / nazwę hosta / nazwę domeny ... ponieważ proxy może rzucać interaktywną wiadomość ... na przykład kontynuuj, a ta pośrednia wiadomość dezorientuje klienta docker i ostatecznie przekroczy limit czasu ...
1.2) jeśli nazwa domeny jest skonfigurowana ... nie zapomnij zaktualizować pliku / etc / hosts, jeśli nie używasz DNS.
1.3) w / etc / default / docker ustaw zmienne env http_proxy i https_proxy ..., ponieważ umożliwia to pobieranie obrazów z zewnętrznych centrów firmowych. format http_proxy = http: // nazwa użytkownika: hasło @ proxy: port
2) zrestartuj usługę docker ... jeśli jest zainstalowana jako usługa, użyj restartu usługi sudo docker service
3) zrestartuj kontener rejestru [sudo docker run -p 5000: 5000 register: 2]
4) oznaczyć wymagany obraz za pomocą sudo docker tag id_obrazu IP: port / nazwa obrazu / zmienna, jeśli istnieje
5) wypchnij obraz ... sudo docker push ip: port / nazwa obrazu
6) Jeśli chcesz pobrać obraz z innego komputera, powiedz B bez TLS / SSL, to w B zastosuj ustawienia 1,1.1 i 2. Jeśli te zmiany nie zostaną wykonane na komputerze B ... pull nie powiedzie się.
źródło
--insecure-registry
jest obejściem, a nie rozwiązaniem.Aby zaoszczędzić sobie kłopotów, dlaczego nie skorzystasz po prostu z DARMOWEJ prywatnej usługi rejestru docker dostarczanej przez gitlab - działa świetnie
https://about.gitlab.com/2016/05/23/gitlab-container-registry/
Ich rejestr jest bezpieczny, więc nie będziesz mieć żadnych problemów
źródło
Ubuntu 16.04
Utwórz (nie istnieje) plik
/etc/systemd/system/docker.service.d/registry.conf
z zawartością:następnie
źródło
Oprócz powyższych odpowiedzi dodaję to, co działało w „docker for mac”:
źródło