了解 Dockerfile 的元素

已完成

Dockerfile 是一个脚本,其中包含一系列用于生成 Docker 映像的指令。 Dockerfile 通常包括以下信息:

  • 用于创建新映像的基础映像或父级映像
  • 用于更新基础操作系统和安装其他软件的命令
  • 要包含的生成项目,例如开发的应用程序
  • 要公开的服务,例如存储和网络配置
  • 要在启动容器时运行的命令

创建 Dockerfile

创建 Dockerfile 的第一步是选择一个用作应用程序基础的基础映像。 例如,如果要生成 .NET 应用程序,则可以选择 Microsoft .NET 映像作为基础映像。

# 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"]

让我们逐一介绍每行的作用:

  • FROM mcr.microsoft.com/dotnet/runtime:6.0:此命令将基础映像设置为运行 .NET 6 应用所需的 .NET 6 运行时。
  • WORKDIR /app:将工作目录设置为 /app,这是复制应用文件的位置。
  • COPY bin/Release/net6.0/publish/ .:将已发布应用的内容复制到容器的 /app 目录。 假设 .NET 6 应用已生成并发布到 bin/Release/net6.0/publish 目录。
  • EXPOSE 80:向外部公开端口 80(默认 HTTP 端口)。 如果应用侦听其他端口,请相应地更改此行。
  • CMD ["dotnet", "MyApp.dll"]:容器启动时运行的命令。 在本例中,我们使用应用的 DLL 文件 (MyApp.dll) 的名称运行 dotnet 命令。 更改此行以匹配应用名称和入口点。

我们不会介绍 Dockerfile 文件规范。 有关详细信息,请浏览 Dockerfile 参考资料。 在生成最终的容器映像时,这些步骤中的每一步都会创建一个缓存的容器映像。 这些临时映像会叠加在上一步生成的映像之上,并在所有步骤完成后显示为单个映像。

资源