Containerfiles 101 - Interactieve Tutorial

Op dit kanaal hebben we het vaak over containers en container-gerelateerde zaken zoals Kubernetes. Één van de dingen die we daarentegen nog nooit besproken hebben is de basis van het zelf maken van containers en container images.

Deze week gaan we hier wat nieuws mee uitproberen, in plaats van een video met uitleg, en eventueel wat source-code, krijgen jullie een interactieve leeromgeving met instructies waar je de uitleg tegelijk in de praktijk kunt toepassen.

Je kunt dit lab vinden op Killercoda in de HCS Sudo Friday omgeving

Template je Containers met Systemd en Podman

Twee jaar geleden hebben we samen met jullie gekeken naar het handmatig maken van een Systemd unit van je containers. Een jaar geleden hebben we laten zien hoe je dat moderner kunt doen met Quadlets. Vandaag willen we met jullie kijken naar een recente uitbreiding op quadlets van Podman 5.0.0 (hopelijk straks in RHEL9.5, maar nu al in Fedora) die het mogelijk maakt om ook je containers via Systemd templates aan te maken. Templates geven je de mogelijkheid om een basis unit te definiëren, waar je vervolgens instanties van kunt starten met hun eigen naam. Die naam kun vervolgens ook als variable in je units gebruiken voor bijvoorbeeld de locatie van data-directories of commandline parameters.

GUIs voor OpenShift en Kubernetes

De hardcore CLI fanaten onder ons zullen het niet willen geloven, maar er zijn echt mensen die de voorkeur geven aan een grafische omgeving waar ze in mogen klikken met een muis of een touchscreen voor hun beheer-werkzaamheden.

Als jij ook van die mensen kent, of er zelf eentje bent natuurlijk, dan ben je waarschijnlijk blij om te weten dat er meerdere applicaties zijn die je een grafische omgeving willen geven om je Kubernetes en/of OpenShift clusters te beheren.

Desktop in a Container

Af en toe kan het handig zijn om een volledige grafische desktop omgeving te draaien apart van je normale desktop. Bijvoorbeeld om een zwaar verouderde versie van een browser te gebruiken om tegen oude remote-management kaarten aan kunnen praten die vasthouden aan encryptie-standaarden die door moderne browsers als onveilig worden gezien, en dus niet meer gebruikt kunnen worden.

Hier zou je een virtuele machine voor kunnen gebruiken, maar het kan ook met minder overhead in een container.

Begrens je Gebruikers tot Containers

Als je een systeem hebt waar gebruikers van een afstand op mogen inloggen kan het handig zijn vanuit security of resource optiek om ze te beperken tot wat ze mogen doen. Hier zijn een aantal traditionele mogelijkheden voor, maar tegenwoordig kun je hun sessies ook beperken tot het draaien in een container. Dit heeft een aantal voordelen ten opzichte van traditionele methodes, zo komen bijvoorbeeld alle sessies uit in dezelfde container, en kan het verkrijgen van extra rechten permanent dichtgezet worden.

Snelle Dev Omgevingen met podman-compose

Tijdens het ontwikkelen van een applicatie kan het helpen om snel te kunnen itereren op builds en tests, zonder steeds naar een extern systeem te moeten pushen om je builds of images te testen. ook kan het nuttig zijn om lokale versies van externe servies, zoals databases, te draaien met test data.

Maar als je meerdere containers lokaal wilt orkestreren kan het soms uiputtend worden om al die losse containers te moeten blijven stoppen, starten, bijwerken, etc. In die gevallen zou het handig zijn als je al je builds, configs, en meer met een enkel configuratie bestand en een enkel commando kon beheren.

Podman Containers als systemd Units - Nieuwe Heetheid met Quadlet

Podman Containers als systemd Units - Nieuwe Heetheid met Quadlet

In een vorige video hebben we al eens gekeken hoe je een systemd unit kan maken van een Podman container. De functionaliteit zoals daar beschreven werkt nog steeds, maar vanaf Podman 4.4 is er ook een makkelijkere methode met behulp van Quadlet.

Met de nieuwe manier kun je een systemd .container unit schrijven, die tijdens het opstarten van je systeem automagisch een .service unit genereert met de juiste instellingen.