Docker Layering for .NET Framework
The .NET team produces Docker images for the .NET Framework, on top of the windowsservercore base image. The release of the .NET Framework 4.7 has caused us to re-think our approach to .NET Framework docker images. This document proposes the new plan.
Goals
The team has the following goals, which are motivating the new plan:
- The .NET Framework is large. It should be added to the Docker graph at a single node.
- The .NET Framework 4.7 should not replace 4.6.2; both versions should be available for compatibility reasons.
- The .NET Framework 4.7 should become the
latest version in all scenarios.
These goals are not specific to the .NET Framework 4.7. Same logic applies when .NET Framework 4.7.1 ships.
Context
Today, there are 4 layers to the .NET ecosystem (in order, from base to leaf-node image):
You have to study the various Dockerfile files for each tag to fully understand the way the layering works. It works differently for .NET Framework 3.5 and 4.6.2. This is, in part, because 4.6.2 is in the windowsservercore base image. This assymetry is part of the problem.
Plan
The plan has the following primary characteristics:
- The dotnet-framework repo will be the single place where .NET Framework versions are exposed (excluding versions that come in the windowsservercore base image).
- The aspnet and wcf repos will layer directly on top of the dotnet-framework repo and expose the dotnet-framework version tags. They will add IIS components, as needed.
- The iis repo will switch to being primarily for non-.NET scenarios.
Docker layering will look like the following (each sub-bullet in the list "FROMs" its parent):
- windowsservercore (includes .NET Framerwork 4.6.2)
- dotnet-framework:4.7, :latest
- aspnet:4.7, :latest
- wcf:4.7, :latest
- dotnet-framework:4.6.2
- dotnet-framework:3.5
iis images will continue to include the .NET Framework 4.6.2 by virtue of using windowsservercore as a base image. iis images will not include .NET Framework 3.5 or 4.7. Users will be directed to use the aspnet or wcf repos to use IIS and .NET together. We'd like feedback if there are IIS + .NET scenarios that are not satisfactorily served by these two repos.
Feedback
Please share your feedback.
Docker Layering for .NET Framework
The .NET team produces Docker images for the .NET Framework, on top of the windowsservercore base image. The release of the .NET Framework 4.7 has caused us to re-think our approach to .NET Framework docker images. This document proposes the new plan.
Goals
The team has the following goals, which are motivating the new plan:
latestversion in all scenarios.These goals are not specific to the .NET Framework 4.7. Same logic applies when .NET Framework 4.7.1 ships.
Context
Today, there are 4 layers to the .NET ecosystem (in order, from base to leaf-node image):
You have to study the various Dockerfile files for each tag to fully understand the way the layering works. It works differently for .NET Framework 3.5 and 4.6.2. This is, in part, because 4.6.2 is in the windowsservercore base image. This assymetry is part of the problem.
Plan
The plan has the following primary characteristics:
Docker layering will look like the following (each sub-bullet in the list "FROMs" its parent):
iis images will continue to include the .NET Framework 4.6.2 by virtue of using windowsservercore as a base image. iis images will not include .NET Framework 3.5 or 4.7. Users will be directed to use the aspnet or wcf repos to use IIS and .NET together. We'd like feedback if there are IIS + .NET scenarios that are not satisfactorily served by these two repos.
Feedback
Please share your feedback.