Zoeken…


Invoering

Een privé en veilig docker-register in plaats van een Docker Hub. Basis docker vaardigheden zijn vereist.

parameters

Commando Uitleg
sudo docker run -p 5000: 5000 Start een docker-container en bind de poort 5000 van de container naar de poort 5000 van de fysieke machine.
--naam register Containernaam (gebruiken om de leesbaarheid van "docker ps" te verbeteren).
-v 'pwd' / certs: / certs Bind CURRENT_DIR / certs van de fysieke machine op / certs van de container (zoals een "gedeelde map").
-e REGISTRY_HTTP_TLS_CERTIFICATE = / certs / server.crt We specificeren dat het register het bestand /certs/server.crt moet gebruiken om te starten. (env-variabele)
-e REGISTRY_HTTP_TLS_KEY = / certs / server.key Hetzelfde voor de RSA-sleutel (server.key).
-v / root / images: / var / lib / registry / Als u al uw registerimages wilt opslaan, moet u dit op de fysieke machine doen. Hier slaan we alle afbeeldingen op / root / images op de fysieke machine op. Als u dit doet, kunt u het register stoppen en opnieuw starten zonder afbeeldingen te verliezen.
register: 2 We specificeren dat we de registerimage van de docker hub (of lokaal) willen halen, en we voegen «2» toe omdat we de versie 2 van het register willen installeren.

Opmerkingen

Hoe een docker-engine te installeren (in deze tutorial client genoemd)

Hoe SSL zelf-ondertekend certificaat te genereren

Certificaten genereren

Genereer een RSA private sleutel: openssl genrsa -des3 -out server.key 4096

Openssl moet bij deze stap om een wachtwoordzin vragen. Merk op dat we alleen het certificaat voor communicatie en authenticatie zullen gebruiken, zonder wachtwoord. Gebruik bijvoorbeeld 123456 bijvoorbeeld.

Genereer de aanvraag voor het ondertekenen van certificaten: openssl req -new -key server.key -out server.csr

Deze stap is belangrijk omdat u om informatie over certificaten wordt gevraagd. De belangrijkste informatie is "Algemene naam", dat is de domeinnaam, die wordt gebruikt voor communicatie tussen het private dockerregister en alle andere machines. Voorbeeld: mijndomein.nl

Verwijder wachtwoordzin van RSA private key: cp server.key server.key.org && openssl rsa -in server.key.org -out server.key

Zoals ik al zei, zullen we ons concentreren op het certificaat zonder wachtwoordzin. Wees dus voorzichtig met alle bestanden van uw sleutel (.key, .csr, .crt) en bewaar ze op een veilige plaats.

Genereer het zelf-ondertekende certificaat: openssl x509 -req -days 365 -in server.csr -signkey server.key -out server.crt

U hebt nu twee essentiële bestanden, server.key en server.crt , die nodig zijn voor de verificatie van het privé-register.

Voer het register uit met een zelfondertekend certificaat

Om het privéregister (veilig) uit te voeren, moet u een zelfondertekend certificaat genereren. Raadpleeg het vorige voorbeeld om het te genereren.

Voor mijn voorbeeld zet ik server.key en server.crt in / root / certs

Voordat u de opdracht docker uitvoert, moet u in de map met de map certs worden geplaatst ( cd ). Als u dat niet bent en u probeert de opdracht uit te voeren, krijgt u een foutmelding als

level = fatal msg = "open /certs/server.crt: geen dergelijk bestand of map"

Wanneer je bent ( cd /root in mijn voorbeeld), kun je in principe het beveiligde / privé-register starten met: sudo docker run -p 5000:5000 --restart=always --name registry -v `pwd`/certs:/certs -e REGISTRY_HTTP_TLS_CERTIFICATE=/certs/server.crt -e REGISTRY_HTTP_TLS_KEY=/certs/server.key -v /root/Documents:/var/lib/registry/ registry:2
Uitleg over de opdracht is beschikbaar in het onderdeel Parameters.

Trek of duw vanuit een docker-client

Wanneer u een werkend register start, kunt u er afbeeldingen op trekken of duwen. Daarvoor heeft u het server.crt- bestand nodig in een speciale map op uw docker-client. Met het certificaat kunt u zich verifiëren bij het register en vervolgens de communicatie coderen.

Kopieer server.crt van de registercomputer naar /etc/docker/certs.d/mydomain.com:5000/ op uw clientcomputer. En hernoem het dan naar ca-certificaten.crt : mv /etc/docker/certs.d/mydomain.com:5000/server.crt /etc/docker/certs.d/mydomain.com:5000/ca-certificates.crt

Op dit punt kunt u afbeeldingen uit uw privéregister ophalen of pushen:
PULL: docker pull mydomain.com:5000/nginx of
DUWEN :

  1. Download een officiële afbeelding van hub.docker.com: docker docker pull nginx
  2. Tag deze afbeelding voordat u deze in het docker tag IMAGE_ID mydomain.com:5000/nginx : docker tag IMAGE_ID mydomain.com:5000/nginx (gebruik docker images om de IMAGE_ID te krijgen)
  3. Push de afbeelding naar het register: docker push mydomain.com:5000/nginx


Modified text is an extract of the original Stack Overflow Documentation
Licentie onder CC BY-SA 3.0
Niet aangesloten bij Stack Overflow