Contents

8 bästa praxis för Docker som du bör känna till

Viktiga lärdomar

Användning av officiellt godkända Docker-images kan ge förbättrad säkerhet och prestanda, medan konstruktion av egna images kan leda till suboptimala konfigurationer och förlängda byggtider.

För att minska potentiella problem relaterade till oförutsedda beteenden och motstridiga beroenden är det lämpligt att använda särskilda instanser av Docker-avbildningar genom att dra och konstruera dem baserat på en angiven version.

Använd kommandot “docker scan” för att utföra en omfattande analys av Docker-avbildningar, för att fastställa deras säkerhetsnivå och se till att de uppfyller kraven för din applikation.

Docker har blivit ett allmänt använt verktyg för containerisering av applikationer, men dess effektivitet kan äventyras om individer inte följer etablerade bästa praxis. Om sådana riktlinjer ignoreras kan systemen utsättas för potentiella säkerhetsrisker och försämra den övergripande prestandan.

För att effektivt utnyttja Dockers funktioner och samtidigt säkerställa optimal säkerhet och skapa välorganiserade containerkonfigurationsfiler, bör du överväga att implementera dessa rekommenderade strategier. Genom att följa dessa bästa metoder kommer du att förbättra din övergripande erfarenhet av Docker och minimera potentiella sårbarheter i dina applikationer.

Använd officiella Docker-bilder

När du distribuerar ditt program i en containeriserad miljö är det absolut nödvändigt att använda en Docker-bild. Det finns två primära alternativ för att skapa denna image - antingen genom att skapa en skräddarsydd konfiguration eller utnyttja redan befintliga images som tillhandahålls av Docker själv.

Att skapa anpassade bilder innebär att man tar på sig hela ansvaret för att hantera alla relevanta konfigurationer. För att illustrera detta, när man skapar en image som är avsedd att användas med en Node.js-applikation, blir det nödvändigt att skaffa och installera både Node.js och alla tillhörande nödvändiga komponenter. Även om detta kan vara mödosamt och kan leda till ofullständiga eller felaktiga inställningar, ger det ändå en hög grad av flexibilitet och kontroll över slutprodukten.

Docker rekommenderar att du använder en officiell node.js-avbildning som innehåller alla korrekta beroenden. Docker-images har bättre säkerhetsåtgärder, är lättviktiga och har testats för olika miljöer. Du hittar de officiella avbildningarna på sidan Dockers officiella avbildningar .

/sv/images/docker-official-images-page-1.jpg

Använd specifika versioner av Docker Image

I allmänhet innebär en auktoritativ image att man hämtar den senaste taggen, som anger den aktuella iterationen av denna image.Varje gång en container konstrueras med hjälp av denna image kommer det därför att resultera i en unik variant av den tidigare containern.

Att använda en mängd olika Docker-avbildningar i en applikations utvecklingsprocess kan leda till oförutsedda funktioner, eftersom dessa olika versioner kan komma i konflikt med kompletterande krav och i slutändan leda till att programmet inte fungerar som det ska.

Docker föreslår att man använder avbildningar från en viss version för att dra och bygga, eftersom officiella avbildningar innehåller omfattande dokumentation och tillgodoser vanliga applikationsscenarier.

Istället för att köra ett generiskt kommando som “docker pull alpine”, vilket kan leda till att en odefinierad eller icke-stödd version används, bör man ange en specifik version, t.ex. “docker pull alpine:3.18”. Detta säkerställer konsekvens och minskar potentiella problem under efterföljande byggprocesser genom att använda en känd och stödd version av avbildningen. För information om tillgängliga images och deras motsvarande Dockerfile-länkar, se det officiella Docker image repository för ytterligare information.

/sv/images/docker-images-various-tags-1.jpg

Skanna avbildningar efter säkerhetsproblem

Ett sätt att säkerställa att en digital avbildning, t.ex. en Docker-container, är fri från säkerhetsproblem är att genomföra en grundlig skanning av innehållet. Denna process kan utföras med hjälp av kommandot “docker scan”, som använder en specifik syntax för korrekt utförande.

 docker scan [IMAGE] 

För att kunna utföra en sårbarhetsanalys på en Docker-containeravbildning måste man autentisera sig och ansluta till Docker-plattformen.

 docker login 

Välj sedan den bild som du vill analysera genom att skanna den med en QR-kod eller ange webbadressen i det lämpliga fältet i programmets gränssnitt.

 docker scan ubuntu:latest 

/sv/images/results-of-scanning-a-docker-image.jpg

Ett verktyg som heter Synk skannar bilden och listar eventuella sårbarheter efter hur allvarliga de är. Du kan se vilken typ av sårbarhet det rör sig om och länkar till information om den, inklusive hur du åtgärdar den. Av skanningen kan du avgöra om bilden är tillräckligt säker för ditt program.

Använd små Docker-avbildningar

När en Docker-avbildning hämtas åtföljs den av en mängd förinstallerade systemverktyg som bidrar till en ökad total storlek som omfattar onödiga verktyg.

Att använda stora Docker-snapshots förbrukar anmärkningsvärd lagringskapacitet och kan hindra den operativa effektiviteten hos containeriserade applikationer, på grund av deras ökade storlek.Dessutom innebär dessa större bilder en ökad sannolikhet för potentiella säkerhetsöverträdelser.

Att optimera dimensionerna på Docker-containrar med hjälp av Alpine-baserade images är en bra strategi för att förbättra den operativa effektiviteten. Genom att använda dessa minimalistiska images, som bara innehåller oumbärliga komponenter, minimerar du effektivt lagringsbehovet samtidigt som du främjar snabb och resursstark prestanda för dina applikationer.

En rad officiellt sanktionerade avbildningar av Alpine kan hittas på Docker, med exempel inklusive de som rör PostgreSQL lätt tillgängliga. En exempelrepresentation av Alpine-iterationer i förhållande till PostgreSQL ges nedan:

/sv/images/apline-image-versions-for-postgresql.jpg

Optimize Caching Image Layers

Varje direktiv i en Dockerfil utgör ett stratum i den grafiska representationen av bilden. Dessa stratifieringar omfattar olika praktiska tillämpningar och utför en rad olika uppgifter. Genom att granska de officiellt sanktionerade repositorierna som Docker Hub är värd för kan man urskilja de direktiv som användes under skapandet av dem.

Dockerfiler innehåller alla nödvändiga komponenter för att generera en image, vilket är en viktig anledning till dess popularitet bland utvecklare jämfört med traditionella virtuella maskiner.

Nedan visas en illustration av en typisk Alpine-image som består av följande komponenter:

/sv/images/alpine-image-layers-1.jpg

När du använder avbildningar som grund för att bygga din applikation introduceras ytterligare lager på den. Processen för att utföra kommandon i en Dockerfil går från topp till botten, där varje ändring kräver att Docker rekonstruerar efterföljande lager.

För att optimera effektiviteten och konsekvensen i containeriseringsprocesser är det lämpligt att strukturera en Dockerfil på ett sådant sätt att de minst föränderliga komponenterna listas först, följt av de med högre nivåer av föränderlighet. Följaktligen bör statiska konfigurationer, t.ex. installationer, placeras i början av filen för att underlätta underhåll och reproducerbarhet.

Docker utnyttjar begreppet skiktning för att optimera byggprestandan genom att konstruera images enbart från modifierade filer. När varje lager skapas ovanpå det föregående, cachas alla filer som förblir oförändrade ovanpå avbildningen, vilket påskyndar efterföljande operationer som är beroende av dessa oförändrade element. Detta tillvägagångssätt minskar inte bara redundansen utan förbättrar även den övergripande effektiviteten i byggprocessen.

/sv/images/how-to-arrange-instructions-in-dockerfile.jpg

Observera illustrationen i bilden ovan.I detta scenario, om ändringar görs i programfilerna, kommer Docker att initiera sin byggprocess baserat på dessa ändringar, vilket eliminerar behovet av en ytterligare installation av npm-paket.

Att använda en befintlig image som grund för konstruktionen kan påskynda den övergripande proceduren jämfört med att initiera en ny rekonstruktion av alla efterföljande lager. Cachelagring förbättrar dessutom hastigheten med vilken pull- och push-operationer på Docker Hub utförs när man hanterar containeravbildningar.

Använd en .dockerignore-fil

När man skapar en image med en Docker-fil kan det tänkas att man vill behålla sekretessen för specifika data som hör till projektet. Vissa dokument och kataloger kan ha en framträdande roll i projektet men behöver inte nödvändigtvis införlivas under konstruktionsfasen.

Användningen av en .dockerignore-fil kan avsevärt minimera storleken på en image, eftersom den endast omfattar de komponenter som krävs under konstruktionsfasen. Dessutom gör detta tillvägagångssätt det lättare att skydda känslig information som konfidentiella nycklar och lösenord genom att förhindra att de oavsiktligt avslöjas.

Filen .dockerignore är en textbaserad konfigurationsfil som finns i samma katalog som filen Dockerfile . I likhet med filen .gitignore består den av en lista med filnamn eller mönster som anger vilka filer som inte ska inkluderas under containeriseringsprocessen när en Docker-avbildning byggs.

Här är ett exempel:

/sv/images/contents-of-a-docker-ignorefile.jpg

Använd principen om den minst privilegierade användaren

Docker använder som standard root-användaren för att utföra administrativa behörigheter för sina containeroperationer, men att följa ett sådant tillvägagångssätt utgör en säkerhetsrisk. Om det finns några sårbarheter i behållarna kan obehöriga inkräktare få åtkomst till Docker-värden.

För att förhindra potentiella säkerhetsöverträdelser är det lämpligt att upprätta ett separat konto med specifika behörigheter som är skräddarsydda för åtkomst till begränsade data. På så sätt kan vi begränsa obehörig åtkomst till konfidentiellt material och samtidigt upprätthålla integriteten i vårt projekt. Om en persons uppgifter skulle äventyras har vi dessutom möjlighet att återkalla dennes åtkomst utan att det påverkar andra användare eller projekt.

Här är en illustration som visar hur man skapar ett användarkonto och specificerar dess åtkomsträttigheter:

/sv/images/creating-user-and-user-group-in-docker.jpg

Vissa grundläggande bilder har inbäddade faksimilanvändare, vilket gör det möjligt att använda förinstallerade användaruppgifter i stället för att behöva åtkomst via rotkontot med dess åtföljande behörigheter.

Varför du bör använda Dockers bästa praxis

Att implementera bästa praxis är ett effektivt sätt att minimera säkerhetsbrister och producera mer strömlinjeformad, välstrukturerad kod i Docker. En mängd olika bästa praxis kan tillämpas på varje aspekt av Docker-funktionalitet som används i din applikation.

Ett strukturerat projekt underlättar sömlös integration med andra orkestreringsplattformar, t.ex. Kubernetes. Projektplanen i den här artikeln fungerar som en startpunkt för din resa mot Docker-kompetens, med möjlighet till ytterligare expansion och anpassning efter behov.