This repository includes the Extensions CLI and samples to create Docker Extensions.
To get started with Docker Extensions you will need the latest version of Docker Desktop. The Docker extension CLI is bundled by default with Docker Desktop version 4.10.0 and higher.
- Create a minimal frontend extension - a minimal Desktop Extension containing only a UI part based on HTML.
- Create a minimal backend extension - a Desktop Extension containing a UI part connecting to a minimal backend.
- Create a minimal Docker CLI extension - a minimal Desktop Extension containing only a UI part that invokes Docker CLI commands.
- Create a ReactJS-based extension - a minimal Desktop Extension containing only a UI part based on ReactJS.
Documentation about the Extensions SDK and creating your own extensions can be found here.
Contributions are welcome to update/improve documentation content (see extensions SDK under desktop/extensions-sdk folder)
Desktop Extensions are packaged and distributed as Docker images. Development of extensions can be done locally without the need to push the extension to Docker Hub. This is described in Extension Distribution.
The extension image must have some specific content as described in Extension Metadata.
The Extensions CLI is an extension development tool that can be used to manage Docker extensions.
This repository contains multiple extensions, each one is defined in an individual directories at the root of the repository. These are Docker developed samples that are not meant to be final products.
To try one of them, navigate to the directory of the extension then use the CLI to build and install the extension on Docker Desktop.
The Quickstart guide describes how to get started developing your custom Docker Extension. It also covers how to open the Chrome Dev Tools and show the extension containers.
The extension UI has access to an extension API to invoke backend operations from the UI, e.g. listing running containers, images, etc. Furthermore, you can communicate with your extension backend service or invoke a binary on the host or in the VM.
We are currently in the process of developing our design system but in the meantime, here are some UI guidelines. Docker Desktop's UI is written in React and Material UI, and we strongly recommend adopting this combination in your extensions as well. This brings the benefit of using our Material UI Theme to easily replicate Docker Desktop's look & feel, and we'll continue to release libraries and utilities targeting this combination.
You can read more about our design guidelines here.