Skip to content

Multi-platform containers #1371

@shykes

Description

@shykes

Overview

This issue aims to centralize the design of multi-platform support in Dagger. This is an important and complex feature, which is being discussed in many different places. Anyone interested in this topic is encouraged to start reading here, and participate here as much as possible, to minimize fragmentation.

What is a platform?

In this context, “platform” designates a combination of an operating system and hardware architecture. For example linux/amd64.

What is multi-platform support?

“Multi-platform support” is a broad term. It includes every aspect of how Dagger understands the concept of compute platforms, and uses it to change its behavior. This includes:

  • Which of buildkit’s underlying multi-platform features to use, and how
  • Whether the end user can configure and query platform information, and how (command line commands, flags etc.)
  • APIs to control platform when executing commands in containers
  • APIs to control platform when pulling Docker images
  • APIs to control platform when pushing Docker images
  • APIs to control platform when building Docker images (with or without Dockerfile)
  • Any combination or aggregation of the above, either as a local or global setting Specifically, what to do with the existing top-level platforms field is in scope.

How buildkit supports multi-platform

Proposed design

This is a placeholder for a proposed design. It is pieced together from various ideas and discussions.

Definition Before multi-platform support After multi-platform support
engine.#Pull
engine.#Push
engine.#Exec
engine.#Dockerfile
docker.#Image
docker.#Pull
docker.#Push
docker.#Run
docker.#Build

Other issues

Metadata

Metadata

Assignees

No one assigned

    Type

    No type

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions