Docker
Docker privé / beveiligd register met API v2
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
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 :
- Download een officiële afbeelding van hub.docker.com: docker
docker pull nginx
- Tag deze afbeelding voordat u deze in het
docker tag IMAGE_ID mydomain.com:5000/nginx
:docker tag IMAGE_ID mydomain.com:5000/nginx
(gebruikdocker images
om de IMAGE_ID te krijgen) - Push de afbeelding naar het register:
docker push mydomain.com:5000/nginx