Docker Images brauchen Platz. Manchmal sogar ziemlich viel. Schwupps, schon ist die private Docker Registry voll. Und dann beginnt der Nörgelnerv…
Wo krieg ich mehr Platte her? Muss ich was löschen? Kann ich etwas archivieren? Wie verträgt sich das eigentlich mit dem Backup?
Alles Schnee von gestern. Verbinde Deine Docker Registry mit Amazon S3 und pack die Docker Images in die Cloud.
Zuaten
Zubereitung
1 – Leg den S3 Bucket an
Geh auf die AWS Management Console => S3 => Create Bucket. Leg einen neuen Bucket an und merk dir den Bucket Name und die Region.
2 – Generier die AWS Security Credentials
Geh auf die AWS Management Console => Identity & Access Management => Create New Users. Leg einen neuen Benutzer an, merk dir die Access Key ID und den Secret Access Key.
3 – Vergib die Zugriffsberechtigungen
Über Permissions => Inline Policies => Custom Policy musst du dem neuen Benutzer die folgenden Berechtigungen zuweisen (copy & paste ins Feld „Policy Document“). Hinterleg in den Zeilen 11 und 22 deinen Bucket Name:
{ "Version":"2012-10-17", "Statement": [ { "Effect": "Allow", "Action": [ "s3:GetBucketLocation", "s3:ListBucket", "s3:ListBucketMultipartUploads" ], "Resource": "arn:aws:s3:::DeinBucketName" }, { "Effect": "Allow", "Action": [ "s3:AbortMultipartUpload", "s3:DeleteObject", "s3:GetObject", "s3:ListMultipartUploadParts", "s3:PutObject" ], "Resource": "arn:aws:s3:::DeinBucketName/*" } ] }
4 – Starte die Docker Registry
Ergänze im folgenden docker-compose.yml deine Access Key ID (Zeile 6), den Secret Access Key (Zeile 7), den Bucket Name (Zeile 8) und die Region (Zeile 9).
version: '2' services: registry: environment: - REGISTRY_STORAGE=s3 - REGISTRY_STORAGE_S3_ACCESSKEY=DeineAccessKeyID - REGISTRY_STORAGE_S3_SECRETKEY=DeinSecretAccessKey - REGISTRY_STORAGE_S3_BUCKET=DeinBucketName - REGISTRY_STORAGE_S3_REGION=DeineRegion - REGISTRY_STORAGE_S3_V4AUTH=true image: registry:2.4 ports: - 5000:5000 restart: always
Starte die Docker Registry:
$ docker-compose up -d
FERTIG
Los geht’s – jetzt kannst du testen ob alles funktioniert:
Pull ein Image aus dem Docker Hub und erstell ein Tag für deine eigene Docker Registry:
$ docker pull busybox && docker tag busybox localhost:5000/busybox
Push das Image in deine Docker Registry:
$ docker push localhost:5000/busybox
Pull das Image aus deiner Docker Registry:
$ docker pull localhost:5000/busybox
Kontrollier über die AWS Management Console ob Dein Bucket jetzt tatsächlich Daten enthält.
Tipps & Tricks
Quellen
“Overview of Docker Registry Documentation”, 01.06.2016
“Docker Distribution – S3 storage driver”, 01.06.2016
“How Amazon Simple Storage Service (Amazon S3) Uses AWS KMS”, 01.06.2016
“Protecting Data Using Server-Side Encryption with AWS KMS–Managed Keys (SSE-KMS)”, 01.06.2016