Jeg byttet ut Docker Desktop med native Linux-containere og har aldri sett meg tilbake

Docker Desktop kan være brukervennlig, men det krever en skjult VM på Linux. Incus tilbyr en bedre løsning med støtten for OCI-containere og en mer direkte tilnærming.
Docker Desktop er utvilsomt elegant. Det rene grensesnittet, én-klikk administrasjon og abstraksjon av kompleksitet gjør det flott for nybegynnere, men denne abstraksjonen kommer med en pris.
Å kjøre Docker Desktop på Linux gir lite mening fordi Docker Desktop selv starter en skjult Linux-virtuell maskin for å fungere. Så containerne dine kjører ikke virkelig på maskinen din, men inni en VM. Det ekstra laget bruker konstant ressurser og gjør feilsøking til et mareritt, noe som er grunnen til at jeg bestemte meg for å gå over til native Linux-containere og aldri har sett meg tilbake.
Incus er ikke bare “en annen Docker-erstatning”
Det kommer fra en annen container-tradisjon
De fleste Docker-alternativer prøver å oppføre seg som Docker. Podman holder bildeforholdet og kommando-modellen kjent, nerdctl gir containerd et Docker-lignende grensesnitt, og Rancher Desktop og lignende verktøy pakker lokale Kubernetes eller container-runtime inn i noe mer tilgjengelig. Dette er nyttige verktøy, men de lever fortsatt mest i applikasjonscontainerverdenen.
Incus kommer fra en annen avstamning. Det er den samfunnsbaserte fortsettelsen av LXD-stil systemcontainersystemet, noe som betyr at det er bygget rundt ideen om å administrere komplette Linux-miljøer, ikke bare enkeltprosess applikasjonsbilder. En Incus-container kan føles som en lettvekts VM. Den har et init-system, nettverksfunksjoner, lagring, profiler, øyeblikksbilder og vedvarende identitet. Du kan SSH inn i den, installere pakker, kjøre tjenester og behandle den som en liten maskin.
Men i lang tid måtte jeg bruke Docker for OCI-applikasjonsbilder og Incus for systemcontainere og VM-er, men så begynte Incus å støtte OCI-containere, og nå kan jeg kjøre de fleste containerne mine med det.
OCI-støtte endret regnestykket
Nå kan du kjøre Docker-bilder på Incus
OCI-støtte er den delen som gjør Incus mye mer interessant som en erstatning for Docker Desktop. Docker populariserte arbeidsflyten, men bildeformatene og registry-økosystemet er ikke lenger knyttet til Docker Desktop-opplevelsen. En stor del av det folk kaller “Docker-bilder” er egentlig OCI-stil bilder distribuert gjennom registre.
Med Incus OCI-støtte kan jeg hente og kjøre applikasjonscontainere ved hjelp av bilder fra registre som Docker Hub. Det betyr at den praktiske avstanden blir mindre. Jeg kan kjøre et normalt Linux-systemcontainer når jeg trenger et vedvarende miljø, og jeg kan kjøre en OCI-applikasjonscontainer når jeg bare trenger den pakket tjenesten.
Dette er skiftet som fikk Incus til å klikke for meg, ettersom min lokale infrastruktur kunne inneholde begge typer containere. Jeg foretrekker OCI-containere når applikasjonsbildet allerede er den rette enheten. Det betyr at Nginx, Caddy, Redis, små webapper, eksportører, testtjenester og pakkede verktøy kan kjøre som OCI-containere. En utviklingsmaskin, et bygge-miljø eller en tjenestevert kan kjøre som en systemcontainer. VM-er forblir tilgjengelige for tilfeller der jeg trenger en separat kjerne eller sterkere isolasjonsgrense.
Jeg vil ikke si at Incus er en perfekt en-til-en erstatning for Docker Compose fordi Compose fortsatt er veldig flink til å beskrive multicontainer applikasjonsstabler. Det gode er at Incus ikke prøver å være Compose med en annen logo. Det føles mer som en lokal privat sky med støtte for flere instansvarianter, og det er en annen modell, og det tar litt tilvenning, men den positive siden er at tilvenningen gir rask avkastning.
Web-grensesnittet får Incus til å føles som en lokal sky
Det gir synlighet uten å gjøre alt til et dashboard-produkt
Incus kommandolinje er god nok til at du kan administrere alt fra terminalen. Slik starter jeg for det meste den daglige arbeidsflyten. I en periode tenkte jeg ikke at jeg trengte noe annet.
Så begynte jeg å bruke web-grensesnittet. Det web-grensesnittet endrer følelsen av Incus. Det gjør containere, VM-er, nettverk, lagringsvolumer, profiler og bilder synlige på ett sted. Du kan se hva som kjører, inspisere konfigurasjonen, åpne konsoller, sjekke øyeblikksbilder og forstå formen på miljøet uten å kjøre fem kommandoer og mentalt sy sammen utdataene. Også kan du GPU-passe gjennom med noen få klikk.
Et web-grensesnitt er ikke en erstatning for å forstå systemet, men det er veldig bra til å gjøre systemet inspiserbart. Incus gir meg det uten å gjøre GUI-en til sentrum for det arkitekturen.
Min daglige arbeidsflyt ble enklere
Vertskapet føles renere
Det første jeg la merke til etter å ha flyttet mer arbeid til Incus, var hvor mye renere vertskapet mitt føltes. Jeg kunne slutte å installere tilfeldige versjoner av databaser, språk-kjøringsmiljøer, meldingskøer og bygget avhengigheter direkte på laptopen. Det var allerede sant med Docker, selvfølgelig, men Incus gjorde langsiktige utviklingsmiljøer mer naturlige.
For eksempel, hvis jeg ønsker en Debian-basert utviklingsboks, trenger jeg ikke å skrive en Dockerfile bare for å simulere et normalt system. Jeg kan starte en Debian-container, installere det jeg trenger, ta et øyeblikksbilde av det, og beholde det. Hvis jeg ødelegger noe, gjenoppretter jeg øyeblikksbildet. Hvis jeg vil ha en kopi til, kloner jeg det. Hvis jeg trenger å teste mot en annen distribusjon, starter jeg et annet bilde.
Dette er spesielt nyttig for skriving av infrastruktur og eksperimentering. Når jeg tester systemd-atferd, nettverksverktøy, forskjeller mellom pakkehåndterere eller tjenestekonfigurasjon, gir et systemcontainer mer mening enn en enkeltprosess Docker-container. Jeg ønsker at miljøet skal oppføre seg som en liten Linux-maskin fordi det er det artikkelen eller eksperimentet vanligvis handler om. Docker kan presses inn i den rollen, men det føles alltid litt galt.
Nettverksforbindelser er mindre mystiske
Det er fortsatt nettverksforbindelse, så det kan fortsatt straffe deg
Containernettverking er der mange "enkle" verktøy blir mindre enkle. Docker Desktop skjuler mye av dette, spesielt på ikke-Linux-plattformer. På Linux er magien mindre nødvendig, men vanene forblir. Du publiserer porter, inspekterer broer, lurer på hvilken DNS-sti som blir brukt, og ender til slutt med å lese iptables- eller nftables-regler mens du angrer på tidligere optimisme.
Incus-nettverking føles mer eksplisitt, da du kan opprette administrerte broer, koble instanser til nettverk, tilordne enheter gjennom profiler, bruke proxy-enheter og inspisere konfigurasjonen på en måte som føles nærmere normal Linux-administrasjon. Det fjerner ikke behovet for å forstå nettverking, og ingenting bra gjør det (jeg vil til og med si "bør"), men det gjør modellen lettere å forholde seg til fordi containeren behandles som en administrert instans med enheter, ikke bare som en prosess med portkartlegginger.
Hvorfor går jeg ikke tilbake?
Grunnen til at jeg ble med Incus er ikke ideologi. Jeg bryr meg ikke om å erstatte ett logo med et annet. Jeg bryr meg om å ha et lokalt miljø som er raskt, inspektbart, scriptbart og nært Linux. Incus gir meg systemcontainere når jeg trenger små Linux-maskiner og VM-er når containere ikke er nok. Den kombinasjonen er vanskelig å slå.
Docker Desktop er fortsatt nyttig for mange, spesielt på macOS og Windows, hvor Linux-containeren må gå gjennom en VM uansett. På Linux ser jeg imidlertid ikke lenger poenget med å ha det ekstra laget for min daglige arbeidsflyt. Native Linux-containere føles mer direkte, og Incus gjør dem håndterbare uten å gjøre dem enkle.
Hvis du vil lese flere artikler som Jeg byttet ut Docker Desktop med native Linux-containere og har aldri sett meg tilbake, kan du besøke kategorien Linux.

Legg igjen en kommentar