26 April 2019

Container registries

Containerization

Zonder containers, geen containerplatform

Maar waar het platform de plek is waar de containers draaien, moet er natuurlijk ook een plaats zijn waar de containers zijn opgeslagen. Noem het een overslagplaats, magazijn of loods: de container registry. Maar een container registry is meer: het is vaak ook de plaats om images (templates voor containers) te bouwen.

Er zijn online versies beschikbaar bij de grote Cloud-spelers (Amazon, Google, Microsoft) en er is natuurlijk de Docker Hub, maar de nadruk ligt in dit artikel op alternatieven voor Docker en dan wel in de private omgeving – dus op de eigen infrastructuur te draaien. Dit biedt voor een organisatie de meeste controle over wie er toegang tot container images heeft en welke container images beschikbaar zijn, bijvoorbeeld alleen eigen software.

Repository of registry?

Een repository is een verzameling met verschillende versies van dezelfde image – bijvoorbeeld verschillende versies van een besturingssysteem of softwarepakket. Een registry is de plaats waar images (en repositories) toegankelijk zijn.

Vier registries

De vier registries die hieronder aan bod komen zijn Artifactory van JFrog, Gitlab Container Registry, Nexus van Sonatype en Quay van CoreOS / Red Hat.

Artifactory
Artifactory (Java) is als repository veel meer dan alleen een opslag voor container images: elk type software artefact is erin op te slaan. Daarmee is Artifactory meer te vergelijken met Sonatype’s Nexus dan met bijvoorbeeld Quay. Het product integreert met andere onderdelen uit de suite van JFrog (zoals XRay voor security en vulnerability scanning), maar ook met alle CI/CD tools en build-omgevingen. Er is een enterprise versie beschikbaar, maar ook een hosted versie die gratis is voor open source projecten. Artifactory dateert van 2008.

De minimale systeemvereisten voor Artifactory zijn vier CPU cores en 4Gb aan geheugen. Er zijn geen specifieke vereisten voor opslag.

Gitlab Container Registry
De container registry van Gitlab (Ruby / Go) is in 2016 uitgebracht en is inmiddels volledig geïntegreerd met GitLab, een van de meest gebruikte sourcecode repositories – het is dan ook een voor de hand liggende keuze als er al is geïnvesteerd in producten van dat bedrijf. De functionaliteit is echter niet zo uitgebreid als die van de andere opties in dit artikel. Er is een enterprise versie beschikbaar, net als een hosted versie.

De minimale systeemvereisten voor een on-premise installatie zijn twee CPU cores en 4Gb geheugen. Het is mogelijk te kiezen voor een S3-compatibel extern bestandsopslagsysteem.

Nexus Repository
Het product Nexus Repository (Java) van Sonatype dateert van 2007 en heeft van origine een sterke ondersteuning van en integratie met de toolchain rondom Java (zoals Maven en Ant). Sinds versie 3 biedt het product ondersteuning voor meer programmeertalen en artefacts, ook container images. Ook is er integratie met de gangbare CI/CD tools. Er is een enterprise en een open source versie, maar geen hosted variant.

De minimale systeemvereisten voor Nexus Repository zijn twee cores met 4Gb geheugen. Er zijn geen specifieke vereisten rondom opslag.

Quay
De registry Quay stamt uit 2013. De ontwikkeling startte vlak na de introductie van Docker en werd voornamelijk ingegeven door de constatering dat er geen tools beschikbaar waren om images in een private registry op te slaan. Via een Docker meetup kwam het team van Quay in contact met Alex Polvi van CoreOS, waarna Quay onderdeel van CoreOS ging uitmaken.

Er is een enterprise versie van Quay beschikbaar, net als een hosted versie. Er is geen open source versie.

CoreOS is in januari 2018 overgenomen door Red Hat. Op de Red Hat Summit in mei van hetzelfde jaar is aangegeven dat het product (voorlopig) blijft bestaan in aanvulling op de container registry die is ingebouwd in OpenShift.

De vier vergeleken

Quay is specifiek ontwikkeld met container images als uitgangspunt en biedt daarmee de meeste container-specifieke functionaliteit. Hoe het product er in de toekomst uitziet is echter afhankelijk van wat Red Hat ermee gaat doen. Het product van GitLab biedt voordelen in een GitLab omgeving, maar is beperkter in functionaliteit.

Het is mogelijk om een eerlijk vergelijk te maken tussen Nexus Repository en Artifactory, omdat beide bedrijven objectieve input leveren aan een vergelijkingsmatrix. Dat neemt niet weg dat ze elkaar alsnog de loef proberen af te steken, met uitspraken als ” Want to learn about Nexus roadmap? No special effort needed. Just take a look of what Artifactory released half a year ago”, terwijl Sonatype aangeeft dat Nexus Repository meer dan 20 keer zo goedkoop is.