Skip to content

Europa: new docker package #1414

@shykes

Description

@shykes

Overview

The new docker package, to be introduced in the Europa release at universe.dagger.io/docker, will be the primary API for using Docker containers, and as such will play an important role in our overall developer experience. Its overall design is complete, but implementation is not. No doubt there will be some last minute questions on the design along the way, too.

This issue tracks remaining work to call the docker package complete.

Use cases

Below is a list of use cases for Docker containers in Dagger, the relevant package, and progress status.

Use case Package Design status Tests status
Build images with a Dockerfile docker 🚧
Build images with CUE docker 🚧
Push and pull images docker
Run ephemeral containers as part of a CICD pipeline (with or without external engine) docker 🚧
Run Docker Compose commands (with or without external engine) docker/compose
Run persistent containers on an external Docker engine docker/client
Run arbitrary commands on an external Docker engine docker/client

High-level design

docker

The purpose of universe.dagger.io/docker is to offer a modern API for the most common uses of Docker containers in the context of CICD:

  • Build images, with or without Dockerfiles
  • Push and pull images
  • Run ephemeral containers for the duration of the pipeline

An external Docker engine is not required by default, but it should be supported as an opt-in whenever useful and practical. When supporting an external engine for an operation, remember that full Docker engine API compatibility is not a goal: there is a separate package, docker/client for that purpose.

docker/client

The purpose of universe.dagger.io/docker/client is to implement a client to the Docker engine API with maximum compatibility, and maximum familiarity for users of the docker CLI.

docker/compose

The purpose of universe.dagger.io/docker/compose is to support running a Docker Compose project, as well as other common Docker Compose operations.

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type
No fields configured for issues without a type.

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions