Utforska element i en Dockerfile
En Dockerfile är ett skript som innehåller en serie instruktioner som används för att skapa en Docker-avbildning. Dockerfiles innehåller vanligtvis följande information:
- Den basavbildning eller överordnade avbildning som vi använder för att skapa den nya avbildningen
- Kommandon för att uppdatera basoperativsystemet och installera annan programvara
- Byggartefakter som ska inkluderas, till exempel ett utvecklat program
- Tjänster som ska göras tillgängliga, till exempel en lagrings- och nätverkskonfiguration
- Det kommando som ska köras när containern startas
Hur du skapar en Dockerfile
Det första steget i att skapa en Dockerfile är att välja en basavbildning som fungerar som grund för ditt program. Om du till exempel skapar ett .NET-program kan du välja en Microsoft .NET-avbildning som bas.
# Use the .NET 6 runtime as a base image
FROM mcr.microsoft.com/dotnet/runtime:6.0
# Set the working directory to /app
WORKDIR /app
# Copy the contents of the published app to the container's /app directory
COPY bin/Release/net6.0/publish/ .
# Expose port 80 to the outside world
EXPOSE 80
# Set the command to run when the container starts
CMD ["dotnet", "MyApp.dll"]
Vi går igenom varje rad för att se vad den gör:
-
FROM mcr.microsoft.com/dotnet/runtime:6.0
: Det här kommandot anger basavbildningen till .NET 6-körningen, som behövs för att köra .NET 6-appar. -
WORKDIR /app
: Anger arbetskatalogen till/app
, där appfiler kopieras. -
COPY bin/Release/net6.0/publish/ .
: Kopierar innehållet i den publicerade appen till containerns/app
katalog. Vi antar att .NET 6-appen har skapats och publicerats ibin/Release/net6.0/publish
katalogen. -
EXPOSE 80
: Exponerar port 80, som är standard-HTTP-port, för omvärlden. Ändra den här raden om din app lyssnar på en annan port. -
CMD ["dotnet", "MyApp.dll"]
: Kommandot som ska köras när containern startar. I det här fallet kör vi dotnet-kommandot med namnet på appens DLL-fil (MyApp.dll
). Ändra den här raden så att den matchar dina appars namn och startpunkt.
Vi kommer inte att täcka Dockerfile-filspecifikationen. Mer information finns i Dockerfile-referensen . Vart och ett av dessa steg skapar en cachelagrad containeravbildning när vi skapar den slutliga containeravbildningen. Dessa temporära avbildningar skiktas ovanpå föregående och visas som en enda avbildning när alla steg har slutförts.
Resurser
- Docker-körningsreferens (CLI)
- Docker-byggreferens