Die Erfindung der Open-Source -Docker-Engine im Jahr 2013 führte dazu, dass die Containerisierung einer der ersten Schritte zur Modernisierung des Prozesses der Entwicklung von Cloud-Anwendungen war. Vor der Erfindung der Docker-Engine mussten Sie Anwendungen für einen bestimmten Computer/eine bestimmte Hardware konfigurieren. Der Nachteil dieses Ansatzes bestand darin, dass es zeitaufwändig sein konnte, eine Anwendung bei Bedarf von einem Server auf einen anderen zu verschieben.
Doch mit der Einführung des Docker Registry wurde die langjährige Herausforderung der Verwaltung und Organisation von Container-Registries gelöst. Tatsächlich wurde das Docker Registry schnell zum Standard der Softwarebranche. Heute helfen Container-Registries Unternehmen dabei, Container-Images für verschiedene Phasen ihres Softwareentwicklungsprozesses an einem zentralen Ort zu sammeln, zu speichern und bereitzustellen.
In diesem Artikel beschreiben wir die wichtigsten Funktionen, die Sie kennen müssen, um das richtige Container Registry für Ihre Softwareentwicklungsanforderungen auszuwählen.
Was ist ein Container Registry?
Ein Containerregister ist eine hochgradig skalierbare serverseitige Anwendung, die es CI/CD-Systemen, Entwicklern und Testern ermöglicht, während der App-Entwicklung erstellte Images zu speichern. Die in einem Containerregister gespeicherten Images sind für Kubernetes, DevOps und containerbasierte App-Entwicklung bestimmt. Beispiele sind Docker Hub, Amazon ECR und Azure.
Wie wähle ich das richtige Container Registry aus?
Wenn es um die Auswahl eines Container-Registrys geht, mangelt es auf dem Markt nicht an Optionen, was die Auswahl zu einer schwierigen Aufgabe machen kann. Doch bevor Sie sich auf die Suche nach einem machen, sollten Sie sich im Vorfeld folgende Kernfragen stellen:
- Möchte ich zusätzlich zu Container-Images weitere Artefakte hosten ? Einige Container-Registries unterstützen andere Dateitypen wie Java, Node.js oder sogar Python-Pakete. Andere wiederum unterstützen nur Container-Images.
- Benötige ich zusätzliche Sicherheit? Eine Funktion, die nur wenige Containerregistrierungen bieten, ist ein Schwachstellenscan, wenn Sie ein Image in die Registrierung übertragen.
- Sollte ich mich für ein lokales oder gehostetes Container Registry entscheiden ?
Wenn Sie sich für die Migration von einem Container zu einem anderen entscheiden, ist die Aufgabe relativ einfach, falls Sie Ihre Meinung ändern.
Welche Top-Container-Registries sind verfügbar?
1. Amazon Elastic Container Registry (ECR)
Amazons ECR kann so konfiguriert werden, dass es private und öffentliche Docker-Registries unterstützt. Diese Registries können mit AWS IAM verwendet werden, um die Zugriffsebenen, Dienste und Anwendungen der Benutzer zu steuern. Im Wesentlichen können Sie definieren, welche Benutzer Zugriff auf die geschützten Container-Images haben.
AWS ECR ist außerdem mit einem Schwachstellen-Image-Scan ausgestattet , was es zu einer unverzichtbaren Funktion für DevSecOps macht. Dies liegt daran, dass es die Common Vulnerabilities and Exposures (CVEs)-Datenbank von Clair verwendet , um den Schweregrad der gefundenen Probleme zu bewerten. Ein weiteres großartiges Feature von AWS ECR sind die Immutable Image-Tags . Wenn diese Funktion aktiviert ist, stellt sie sicher, dass niemand ein Image überschreiben kann, nachdem es in die Containerregistrierung übertragen wurde.
Die Preisinformationen für Amazon Elastic Container Registry (AWS ECR) finden Sie hier: https://aws.amazon.com/ecr/pricing/
2. Azure Container Registry (ACR)
Microsofts Azure Container Registry basiert auf Docker Registry 2.0, wobei die Authentifizierung von Azure RBAC verwaltet wird . Azures Container Registry verfügt über Funktionen, die die meisten Mitbewerber noch nicht anbieten, wie z. B.:
- automatisches Löschen alter Bilder
- Aufbewahrungsrichtlinie für ungetaggte Manifeste
- Vertrauen in Inhalte
Es ist wichtig zu beachten, dass Content Trust auf einem von Docker erstellten Konzept basiert , das Ihnen ermöglicht, Images zu signieren, die Sie in Ihre Azure Container Registry übertragen.
Im Wesentlichen können Anwendungen/Benutzer, die Ihr Image verwenden, ihre Clients so konfigurieren, dass nur signierte Images abgerufen werden. In der Zwischenzeit kann der Docker-Client die Integrität des Images überprüfen, sodass er sicher sein kann, dass das Image von Ihnen veröffentlicht wurde und nach der Veröffentlichung nicht geändert wurde. Neben dem Hosten von Docker-Container-Images unterstützt die Azure Container Registry auch OCI-Images , OCI-Artefakte und Helm-Charts .
Wenn es um Preisinformationen geht, geht Microsoft anders vor, da es ein Stufensystem verwendet. Weitere Informationen finden Sie unter: https://azure.microsoft.com/en-us/pricing/details/container-registry/
3. Docker Hub Container-Registrierung
Docker Hub ist wahrscheinlich das beliebteste Container Registry, da es das Standard-Docker-Repository ist. Es fungiert als Marktplatz für öffentliche Container-Images und ist daher die beste Wahl, wenn Sie ein Image öffentlich verteilen möchten. Interessanterweise war die kostenlose Option von Docker Hub eine Zeit lang sehr attraktiv, bis einige Benutzer begannen, es zu missbrauchen, um mit der Auto-Build-Funktion Kryptowährungen zu schürfen.
Als Ergebnis haben sie einige Beschränkungen für Dockers Pull/Push-Image festgelegt und die Monetarisierung von Docker Hub überdacht. Weitere Informationen zu den Änderungen an den Ratenbeschränkungen finden Sie in diesem Artikel und die Umstellung auf Docker Hub Auto Builds hier. Eine Möglichkeit, Dockers Pull-Image-Ratenbeschränkung zu umgehen, ist die Verwendung eines Caching-Proxys. Weitere Informationen dazu finden Sie hier .
In Bezug auf die Preise können Sie mit dem Stufensystem bestimmte Funktionen mit einem kostenpflichtigen Plan freischalten. Die Gesamtkosten sind jedoch nicht so effektiv wie bei der Verwendung einiger anderer Lösungen wie AWS ECR oder Azure Container Registry von Microsoft.
Weitere Informationen zu den Preisen von Docker Hub finden Sie hier auf der Website:
4. GitHub-Paketregistrierung
Im Mai 2019 brachte GitHub seine Paketregistrierungslösung auf den Markt . Aufgrund des Erfolgs dieser Paketregistrierungslösung veröffentlichten sie im September 2020 zunächst als Beta-Option die Unterstützung für Container-Images. Ein bemerkenswerter Aspekt der Containerregistrierung von GitHub ist die Tatsache, dass sie insbesondere für Entwickler ein nahtloses Erlebnis bietet. Grundsätzlich wird die Authentifizierung mit einem persönlichen Zugriffstoken verwaltet, und das ist alles, was Sie brauchen.
Eine weitere Option ist die Verwendung eines öffentlichen Repositorys. In diesem Fall müssen sich Ihre Benutzer jedoch mit einem GitHub-Benutzerkonto authentifizieren. Insgesamt ist GitHub Packages sicherlich nicht das Container Registry mit den meisten Funktionen. Die Preise sind jedoch wettbewerbsfähig, wenn Sie GitHub Actions verwenden möchten, da Ihnen keine Kosten für eingehenden Datenverkehr berechnet werden. Hier finden Sie einen detaillierteren Überblick über die Funktionen und Preise von GitHub Packages:
5. GitLab Container-Registrierung
GitLab verfügt über ein eigenes Container Registry , das kostenlos verwendet werden kann und Docker-Container-Images sowie Helm Chart (noch in der Beta-Phase ) unterstützt. Es kann selbst gehostet werden, wenn Sie die selbst gehostete Version von GitLab verwenden, oder cloudbasiert über GitLab.com. Eine der großartigen Funktionen des GitLab Container Registry ist seine Bereinigungsrichtlinie , die Tags entfernt, die einem bestimmten Regex-Muster entsprechen.
Alternativ können Sie ihr Package Registry ausprobieren , das ebenfalls kostenlos ist und Composer, Conan, Generic, Maven, npm, NuGet, PyPI und RubyGem unterstützt. Ohne Zweifel ist es eine großartige Option, die Sie in Betracht ziehen sollten, wenn Sie GitLab bereits für Ihr Projekt-Repository verwenden.
6. Google Artifact Registry (GAR)
Bisher wurde Google Container Registry (GCR) empfohlen, doch seit Sommer 2021 fordert Google seine Kunden auf, auf Google Artifact Registry umzusteigen , da GCR nur kritische Sicherheitsfixes erhält. Im Wesentlichen ist Google Artifact Registry die neue Methode, Container-Images und Nicht-Container-Artefakte wie Maven-, npm-, Python-, Apt- oder sogar Yum-Pakete zu handhaben.
In erster Linie lässt sich GAR problemlos in CI/CD-Pipelines integrieren, um den Aufbau und die Bereitstellung von Containern zu optimieren. Darüber hinaus bietet es auch einen Scan für Schwachstellen in Bildern, den Sie manuell aktivieren können.
Dieser Artikel beleuchtet Google Artifact Registry und seine Funktionen zum Scannen von Schwachstellen genauer:
7. Hafencontainerregister
Harbor wurde 2014 erstellt und 2016 auf ein Open-Source-Modell umgestellt. Es ist sicherlich eines der erfolgreichsten Open-Source-Projekte von VMware. Harbor ist ein Container Registry, das vom Benutzer installiert, konfiguriert und verwaltet werden muss. Es ist mit seinem Docker-Container einfach bereitzustellen und kann mit jeder Linux-Distribution verwendet werden, die Docker unterstützt. Beachten Sie, dass Sie Harbor auch mit einem Helm-Chart auf Ihrem Kubernetes-Cluster bereitstellen können.
Das Harbor-Containerregister unterstützt auch die meisten Funktionen, die Sie von einem Containerregister erwarten, wie z. B.:
- Schwachstellenscan
- Speicherbereinigung
- regionenübergreifende Replikation
- Vertrauen in Inhalte
Insgesamt ist es eine solide Option, die Sie in Betracht ziehen sollten, wenn Sie Ihr Container Registry hosten möchten.
8. Red Hat Quay
Quay wurde ursprünglich 2012 erstellt und hat in den letzten Jahren große Veränderungen erfahren. Zunächst wurde dieses Containerregister 2014 von CoreOS und später 2018 von RedHat gekauft.
Es kann ziemlich verwirrend sein, den Unterschied zwischen Quay, Project Quay oder Red Hat Quay zu verstehen. Hier ist ein kurzer Überblick darüber, was die einzelnen Versionen beinhalten:
- Project Quay : eigenständiges Container Registry, die Open-Source-Distribution von Red Hat Quay, vergleichbar mit Sonatype Nexus Repository OSS oder Harbor.
- Red Hat Quay.io : Unternehmenslösung, gehostet in der Cloud von Red Hat, deren Preis nach Anzahl der privaten Repositories berechnet wird. Die öffentlichen Repositories sind jedoch weiterhin kostenlos.
- Red Hat Quay : Enterprise-Container-Registrierung für Private-Cloud-Bereitstellungen, verfügbar über Red Hat OpenShift als integrierter Operator.
Im Wesentlichen bietet Quay eine Vielzahl von Produkten für unterschiedliche Umgebungen, alle mit zahlreichen Funktionen wie Sicherheitsscans (mit Clair ), Repository-Spiegelung, Audit-Protokollierung usw.
Die Preisdetails für Red Hat Quay.io finden Sie hier: https://quay.io/plans/
9. Sonatype Nexus Repository OSS
Ähnlich wie Harbor ist Nexus Repository eine weitere selbstgehostete Container-Registrierungslösung, die auch andere Sprachpakete unterstützt . Sonatype verfügt über ein Docker-Image, mit dem Sie es problemlos in Ihrer Infrastruktur bereitstellen können. Diese Container-Registrierung bietet eine Pro-Version ihres Nexus Repository, die einige zusätzliche Funktionen bietet. Hier können Sie mehr darüber lesen: https://www.sonatype.com/products/repository-oss-vs-pro-features
Dies kann eine gute Option sein, wenn Sie ein Paket-/Container Registry selbst hosten möchten, da es eine umfangreiche Dokumentation bietet, die viele Szenarien abdeckt; https://help.sonatype.com/repomanager3
Vergleich
Amazon ECR | Azure-CR | Docker-Hub | Google AR | GitHub-Pakete | GitLab CR | Hafen | RedHat Quay | Sonatype Nexus Repository | |
Preise | Speicher:kostenlos (für 1 Jahr mit AWS Free Usage Tier ) bis 0,5 GB, danach 0,10 $ pro GB/Monat. Eingehende Datenübertragung:0,09 $ pro GB/Monat. | Speicher:0,167 $ pro Tag für 10 GB im Basistarif, 0,667 $ pro Tag für 100 GB im Standardtarif, 1,667 $ pro Tag für 500 GB im Premiumtarif. | Ihre Preise basieren nicht auf dem Speicherplatz.3 | Speicher:kostenlos bis 0,5 GB, danach 0,10 $ pro GB/Monat.Eingehende Datenübertragung:möglicherweise kostenlos, siehe Preisinformationen für Netzwerkausgang . | Speicher:500 MB für die kostenlose Stufe , 2 GB für die Pro-Stufe , 2 GB für die Team-Stufe, 50 GB für die Enterprise- Stufe , 0,25 $/GB für zusätzlichen Speicher. Eingehende Datenübertragungen:Kostenlos, wenn über GitHub Actions verwendet, andernfalls1 GB/Monat (kostenlose Stufe), 10 GB/Monat (Pro-Stufe),10 GB/Monat (Team-Stufe),100 GB/Monat (Enterprise-Stufe),0,5 $/GB für zusätzliche Übertragungen. | 🆓 | 🆓(muss selbst gehostet werden) | Red Hat Quay.io :15 $/Monat für 5 private Repos.30 $/Monat für 10 private Repos.60 $/Monat für 20 private Repos.125 $/Monat für 50 private Repos. | 🆓(muss selbst gehostet werden) |
Unterstützt Sprachpakete (npm, Maven, yum usw.) | ❌(AWS CodeArtifact hilft dabei) | ❌(unterstützt aber OCI-Artefakte) | ❌ | ✅ | ✅ | ✅6 | ❌(unterstützt aber OCI-Artefakte) | ❌(unterstützt aber OCI-Artefakte) | ✅ |
Authentifizierung | AWS IAM | Azure RBAC | Passwort oder Zugriffstoken | GCP IAM | Zugriffstoken | Persönlicher Zugriffstoken oder Bereitstellungstoken | AD, LDAP, RBAC und OIDC | LDAP, Keystone, OIDC, Google und Github | Atlassian Crowd, LDAP, RUT, SAML |
Regionenübergreifende Replikation | ✅ | ✅ (nur mit Premium-Stufe verfügbar) | ❌ | ✅ | ❌ | ❌ (nicht verfügbar auf ihrem SaaS, aber verfügbar auf ihrer selbstgehosteten Lösung ) | ✅ | ✅ | ✅ |
MFA für Image Push/Pull | ✅ | ❌ | ✅ (Beta) | ❌ | ❌ | ❌ | ✅ | ❌ | ❌ |
SLA-Verfügbarkeit | 99,9 % | 99,9 % | n / A | 99,9 % | n / A | n / A | selbst gehostet | n / A | selbst gehostet |
Speicherbereinigung | ✅ | ✅ | ❌ | ❌ | ❌ | ✅ | ✅ | ✅ (Tag-Ablauf) | ✅ |
Bildscannen | ✅🆓 | ✅🆓 | ✅ (kostenlos, aber eingeschränkt, siehe Preisplan) | ✅ (0,26 $/Bild) | ❌ | ✅(nur mit Ultimate-Stufe ) | ✅ | ✅ | ❌ |
Ratenbegrenzungen– Pull– Push | – 120 000/Minute- 120 000/Minute 1 | – bis zu 10.000/Minute, abhängig von der verwendeten Stufe. – bis zu 2.000/Minute, abhängig von der verwendeten Stufe. 2 | – bis zu 1 440/Minute, abhängig von der verwendeten Stufe. – Unbekannt 4 | – 60 000/Minute- 18 000/Minute 5 | n / A | n / A | selbst gehostet | n / A | selbst gehostet |
1 https://docs.aws.amazon.com/AmazonECR/latest/userguide/service-quotas.html
2 https://docs.microsoft.com/en-ca/azure/container-registry/container-registry-skus#service-tier-features-and-limits
3 https://www.docker.com/pricing
4 https://www.docker.com/pricing
5 https://cloud.google.com/artifact-registry/quotas
6 Paketregistrierung: https://docs.gitlab.com/ee/user/packages/package_registry/
7 Wenn Sie mehrere Harbor-Instanzen haben: https://goharbor.io/docs/2.3.0/administration/configuring-replication/
Mehr lesen: Die besten CI/CD-Tools für DevOps: Ein Überblick über die Top 10
Fazit
Alles in allem ist der Schlüsselfaktor, den Sie berücksichtigen müssen, die netzwerknahe Bereitstellung, da diese für die Minimierung von Kosten und Latenz bei der Verwendung eines Container Registry von entscheidender Bedeutung ist.
Wir empfehlen unseren Kunden vorzugsweise immer, das Container Registry ihres Cloud-Anbieters zu verwenden. Wenn Ihre Infrastruktur beispielsweise vollständig auf AWS basiert, empfehlen wir Ihnen, AWS ECR zu verwenden.
Dies liegt daran, dass alle Cloud-Ressourcen ein gemeinsames Authentifizierungsmodell verwenden und Bilder schneller abgerufen werden können, da sie keine langen Strecken zwischen verschiedenen Cloud-Anbietern zurücklegen müssen.
Bluelight Consulting ist ein Nearshore-DevOps- und Software-Outsourcing-Unternehmen, das Startups, SaaS und Unternehmen mit innovativen Lösungen unterstützt.
Mit Nearshore Boost, unserem Nearshore-Softwareentwicklungsdienst, können Sie kostengünstiger als die Einstellung von Mitarbeitern im eigenen Unternehmen sicherstellen, dass Ihr Unternehmen mit einem erweiterten Team und einer größeren globalen Präsenz wettbewerbsfähig bleibt und flexibel auf die Bedürfnisse Ihrer Kunden reagieren kann.
Erfahren Sie mehr über unsere Dienstleistungen, indem Sie noch heute eine kostenlose Beratung bei uns buchen!