-
Notifications
You must be signed in to change notification settings - Fork 854
Multi-platform containers #1371
Copy link
Copy link
Closed
Labels
Description
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
platformsfield is in scope.
How buildkit supports multi-platform
- https://medium.com/@tonistiigi/faster-multi-platform-builds-dockerfile-cross-compilation-guide-part-1-ec087c719eaf
- https://github.com/crazy-max/goxx
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
Reactions are currently unavailable