dotnet / dotnet/announcements

.NET Core Docker images will move to multi-arch based tags

Open
#14 13 comments 5 reactions 0 assignees View on GitHub
Docker
Dominant language
No language data
Stars
1.4k
Forks
53
PR merge metrics
No merged PRs in 30d

Description

## Summary
Docker has a [multi-arch feature]( https://github.com/moby/moby/issues/15866) that [microsoft/dotnet-nightly]( https://hub.docker.com/r/microsoft/dotnet-nightly/) recently started utilizing. The plan is to port this to the [official microsoft/dotnet repo]( https://hub.docker.com/r/microsoft/dotnet/) shortly. The multi-arch feature allows a single tag to be used across multiple machine configurations. Without this feature each architecture/OS/platform requires a unique tag. For example, the microsoft/dotnet:1.0-runtime tag is based on Debian and microsoft/dotnet:1.0-runtime-nanoserver if based on Nano Server. With multi-arch there will be one common microsoft/dotnet:1.0-runtime tag. If you pull that tag from a Linux container environment you will get the Debian based image whereas if you pull that tag from a Windows container environment you will get the Nano Server based image. This helps provide tag uniformity across Docker environments thus eliminating confusion.

Current microsoft/dotnet tags:
- [`1.0.5-runtime`, `1.0-runtime` (*1.0/debian/runtime/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.0/debian/runtime/Dockerfile)
- [`1.0.5-runtime-nanoserver`, `1.0-runtime-nanoserver` (*1.0/nanoserver/runtime/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.0/nanoserver/runtime/Dockerfile)
- [`1.0.5-runtime-deps`, `1.0-runtime-deps` (*1.0/debian/runtime-deps/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.0/debian/runtime-deps/Dockerfile)
- [`1.0.5-sdk`, `1.0-sdk` (*1.0/debian/sdk/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.0/debian/sdk/Dockerfile)
- [`1.0.5-sdk-nanoserver`, `1.0-sdk-nanoserver` (*1.0/nanoserver/sdk/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.0/nanoserver/sdk/Dockerfile)
- [`1.1.2-runtime`, `1.1-runtime`, `1-runtime`, `runtime` (*1.1/debian/runtime/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.1/debian/runtime/Dockerfile)
- [`1.1.2-runtime-nanoserver`, `1.1-runtime-nanoserver`, `1-runtime-nanoserver`, `runtime-nanoserver` (*1.1/nanoserver/runtime/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.1/nanoserver/runtime/Dockerfile)
- [`1.1.2-runtime-deps`, `1.1-runtime-deps`, `1-runtime-deps`, `runtime-deps` (*1.1/debian/runtime-deps/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.1/debian/runtime-deps/Dockerfile)
- [`1.1.2-sdk`, `1.1-sdk`, `1-sdk`, `sdk`, `latest` (*1.1/debian/sdk/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.1/debian/sdk/Dockerfile)
- [`1.1.2-sdk-nanoserver`, `1.1-sdk-nanoserver`, `1-sdk-nanoserver`, `sdk-nanoserver`, `nanoserver` (*1.1/nanoserver/sdk/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/1.1/nanoserver/sdk/Dockerfile)
- [`2.0.0-preview1-runtime`, `2.0-runtime`, `2-runtime` (*2.0/debian/runtime/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/2.0/debian/runtime/Dockerfile)
- [`2.0.0-preview1-runtime-nanoserver`, `2.0-runtime-nanoserver`, `2-runtime-nanoserver` (*2.0/nanoserver/runtime/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/2.0/nanoserver/runtime/Dockerfile)
- [`2.0.0-preview1-runtime-deps`, `2.0-runtime-deps`, `2-runtime-deps` (*2.0/debian/runtime-deps/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/2.0/debian/runtime-deps/Dockerfile)
- [`2.0.0-preview1-sdk`, `2.0-sdk`, `2-sdk` (*2.0/debian/sdk/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/2.0/debian/sdk/Dockerfile)
- [`2.0.0-preview1-sdk-nanoserver`, `2.0-sdk-nanoserver`, `2-sdk-nanoserver` (*2.0/nanoserver/sdk/Dockerfile*)](https://github.com/dotnet/dotnet-docker/blob/master/2.0/nanoserver/sdk/Dockerfile)

New multi-arch microsoft/dotnet-nightly tags:
- `1.0.5-runtime`, `1.0-runtime`:
- [`1.0.5-runtime-jessie` (*1.0/runtime/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.0/runtime/jessie/Dockerfile)
- [`1.0.5-runtime-nanoserver` (*1.0/runtime/nanoserver/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.0/runtime/nanoserver/Dockerfile)
- `1.0.5-runtime-deps`, `1.0-runtime-deps`:
- [`1.0.5-runtime-deps-jessie` (*1.0/runtime-deps/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.0/runtime-deps/jessie/Dockerfile)
- `1.0.5-sdk`, `1.0-sdk`:
- [`1.0.5-sdk-jessie` (*1.0/sdk/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.0/sdk/jessie/Dockerfile)
- [`1.0.5-sdk-nanoserver` (*1.0/sdk/nanoserver/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.0/sdk/nanoserver/Dockerfile)
- `1.1.2-runtime`, `1.1-runtime`, `1-runtime`, `runtime`:
- [`1.1.2-runtime-jessie` (*1.1/runtime/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.1/runtime/jessie/Dockerfile)
- [`1.1.2-runtime-nanoserver` (*1.1/runtime/nanoserver/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.1/runtime/nanoserver/Dockerfile)
- `1.1.2-runtime-deps`, `1.1-runtime-deps`, `1-runtime-deps`, `runtime-deps`:
- [`1.1.2-runtime-deps-jessie` (*1.1/runtime-deps/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.1/runtime-deps/jessie/Dockerfile)
- `1.1.2-sdk`, `1.1-sdk`, `1-sdk`, `sdk`, `latest`:
- [`1.1.2-sdk-jessie` (*1.1/sdk/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.1/sdk/jessie/Dockerfile)
- [`1.1.2-sdk-nanoserver` (*1.1/sdk/nanoserver/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/1.1/sdk/nanoserver/Dockerfile)
- `2.0.0-preview1-runtime`, `2.0-runtime`, `2-runtime`:
- [`2.0.0-preview1-runtime-jessie` (*2.0/runtime/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/2.0/runtime/jessie/Dockerfile)
- [`2.0.0-preview1-runtime-nanoserver` (*2.0/runtime/nanoserver/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/2.0/runtime/nanoserver/Dockerfile)
- `2.0.0-preview1-runtime-deps`, `2.0-runtime-deps`, `2-runtime-deps`:
- [`2.0.0-preview1-runtime-deps-jessie` (*2.0/runtime-deps/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/2.0/runtime-deps/jessie/Dockerfile)
- `2.0.0-preview1-sdk`, `2.0-sdk`, `2-sdk`:
- [`2.0.0-preview1-sdk-jessie` (*2.0/sdk/jessie/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/2.0/sdk/jessie/Dockerfile)
- [`2.0.0-preview1-sdk-nanoserver` (*2.0/sdk/nanoserver/Dockerfile*)](https://github.com/dotnet/dotnet-docker-nightly/blob/master/2.0/sdk/nanoserver/Dockerfile)

This change has been in [microsoft/dotnet-nightly]( https://hub.docker.com/r/microsoft/dotnet-nightly/) for a little over a week. If you have feedback please file an issue on the [.NET Core Docker GitHub repo](https://github.com/dotnet/dotnet-docker).

## .NET Core Docker Tools
The tooling to produce multi-arch tags is still evolving. As a result we found it necessary to create some tooling to build the images and produce the manifest that enables multi-arch. This [tooling](https://github.com/dotnet/docker-tools) is open sourced as well.

Contributor guide

No contributing guide indexed for this repository

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.