Viktiga takeaways

  • Använd officiella Docker-bilder för bättre säkerhet och prestanda. Att bygga dina egna bilder kan leda till felaktig konfiguration och ta längre tid.
  • Använd specifika versioner av Docker-bilder för att undvika oförutsägbart beteende och kollision med beroenden. Dra och bygg med bilder av en specifik version.
  • Skanna Docker-bilder efter säkerhetsbrister med kommandot Docker scan. Bestäm om en bild är tillräckligt säker för din applikation.

Docker är den mest populära programvaran för containerisering, men inte alla använder den effektivt. Om du inte följer Dockers bästa praxis kan du lämna dina appar sårbara för säkerhetsproblem eller prestandaproblem.

Här är några bästa praxis du kan använda för att använda Docker-funktioner på ett resursmässigt sätt. Dessa åtgärder förbättrar säkerheten och säkerställer att du skapar underhållsbara Docker-filer.

1. Använd officiella Docker-bilder

När du containeriserar din applikation måste du använda en Docker-avbildning. Du kan bygga en bild med anpassad konfiguration eller använda Dockers officiella bilder.

instagram viewer

Att bygga dina egna bilder kräver att du sköter all konfiguration själv. För att till exempel bygga en bild för en node.js-applikation måste du ladda ner node.js och dess beroenden. Processen är tidskrävande och kanske inte resulterar i korrekt konfiguration.

Docker rekommenderar att du använder en officiell node.js-bild som kommer med alla korrekta beroenden. Docker-bilder har bättre säkerhetsåtgärder, är lätta och testas för olika miljöer. Du hittar de officiella bilderna på Dockers officiella bilder sida.

2. Använd specifika versioner av Docker Image

Vanligtvis, när du drar en officiell bild, är det den med den senaste taggen som representerar den senast uppdaterade versionen av den bilden. Varje gång du bygger en behållare från den bilden är det en annan version av den sista behållaren.

Att bygga med olika Docker-bildversioner kan orsaka oförutsägbart beteende i din applikation. Versionerna kan krocka med andra beroenden och så småningom få din app att misslyckas.

Docker rekommenderar att du drar och bygger med hjälp av bilder av en specifik version. Officiella bilder har också dokumentation och täcker de vanligaste användningsfallen.

Till exempel istället för docker pull alpin, använda sig av docker pull alpint: 3.18.3. Docker kommer att dra den specifika versionen. Du kan sedan använda den i successiva versioner, vilket minskar antalet fel i din applikation. Du kan hitta de särskilda versionerna av bilder på den officiella Docker-bildsidan, under Taggar som stöds och respektive Dockerfile-länkar:

3. Skanna bilder efter säkerhetssårbarheter

Hur kan du avgöra att en bild du vill bygga med inte har några säkerhetsbrister? Genom att skanna den. Du kan skanna Docker-bilder med kommandot Docker scan. Syntaxen är som följer:

docker scan [IMAGE]

Du måste först logga in i docker för att skanna en bild.

docker login

Skanna sedan den specifika bilden du vill kontrollera:

docker scan ubuntu: latest

Ett verktyg som heter Synk skannar bilden och listar eventuella sårbarheter efter deras svårighetsgrad. Du kan se typen av sårbarhet och länkar till information om den, inklusive hur du åtgärdar den. Du kan se från skanningen om bilden är tillräckligt säker för din applikation.

4. Använd Docker-bilder i små storlekar

När du drar en Docker-bild kommer den med alla systemverktyg. Detta ökar bildstorleken med verktyg du inte behöver.

Stora Docker-bilder tar upp lagringsutrymme och kan sakta ner körtiden för behållare. De har också en större möjlighet till säkerhetsbrister.

Du kan minska storleken på Docker-bilder med Alpine-bilder. Alpina bilder är lätta och kommer med endast de nödvändiga verktygen. De minskar lagringsutrymmet, vilket gör att din applikation körs snabbare och mer effektivt.

Du hittar en alpin version för de flesta av de officiella bilderna på Docker. Här är ett exempel på alpina versioner för PostgreSQL:

5. Optimera bildlager i cachelagring

Varje kommando i en Dockerfil representerar ett lager på bilden. Skikten har olika verktyg och utför olika funktioner. Om du tittar på de officiella bilderna på Docker Hub kommer du att se instruktionerna som används för att skapa dem.

Dockerfilen innehåller allt du behöver för att skapa bilden. Det är en av anledningarna till att många utvecklare föredrar Docker framför virtuella maskiner.

Här är strukturen för ett exempel på alpin bild:

När du bygger din applikation baserat på en bild, lägger du till fler lager i bilden. Docker kör instruktioner på en Dockerfil från topp till botten, och om ett lager ändras måste Docker bygga om efterföljande lager.

Den bästa praxisen är att ordna din Dockerfile från de minst förändrade filerna till de som ändras oftast. Instruktionerna som inte ändras, som installation, kan finnas överst i filen.

När du ändrar en fil bygger Docker från de ändrade filerna och cachar de oförändrade filerna ovanför den. Därför går processen snabbare.

Titta på exemplet som illustreras i bilden ovan. Om det finns en förändring i programfilerna bygger Docker därifrån; det behöver inte installera npm-paket igen.

Om du bygger från bilden kommer processen att gå snabbare än att bygga om alla andra lager på nytt. Cachning påskyndar också att dra och skjuta bilder från Docker Hub.

7. Använd en .dockerignore-fil

När du bygger en bild med hjälp av en Dockerfil, kanske du vill hålla viss information privat. Vissa filer och mappar kan vara en del av projektet, men du vill inte inkludera dem i byggprocessen.

Att använda en .dockerignore-fil minskar bildstorleken avsevärt. Detta beror på att byggprocessen endast innehåller nödvändiga filer. Det hjälper också att hålla filer privata och att undvika att avslöja hemliga nycklar eller lösenord.

.dockerignore-filen är en fil som du skapar i samma mapp som din Dockerfile. Det är en textfil, ungefär som en .gitignore-fil, som innehåller namnen på alla filer som du inte vill inkludera i byggprocessen.

Här är ett exempel:

8. Använd principen för den minst privilegierade användaren

Som standard använder Docker root-användaren som admin för behörighet att köra kommandon, men detta är dålig praxis. Om det finns en sårbarhet i en av behållarna kan hackare komma åt Docker-värden.

För att undvika detta scenario, skapa en dedikerad användare och grupp. Du kan ställa in de behörigheter som krävs för gruppen för att skydda känslig information. Om en användare blir utsatt för intrång kan du ta bort dem utan att exponera hela projektet.

Här är ett exempel som visar hur du skapar en användare och ställer in deras behörigheter:

Vissa basbilder har skapade pseudo-användare. Du kan använda de installerade användarna istället för rotanvändarbehörigheterna.

Varför du bör anta Dockers bästa praxis

Bästa metoder är ett utmärkt sätt att minska sårbarheter och skriva renare kod. Det finns många bästa praxis som du kan tillämpa på varje Docker-funktion du använder.

Ett välorganiserat projekt gör synkronisering enklare med andra orkestreringsverktyg som Kubernetes. Du kan börja med de som beskrivs i artikeln och anta fler när du lär dig Docker.