了解 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 参考资料。 在生成最终的容器映像时,这些步骤中的每一步都会创建一个缓存的容器映像。 这些临时映像会叠加在上一步生成的映像之上,并在所有步骤完成后显示为单个映像。
资源
- Docker 运行参考 (CLI)
- Docker 生成参考