Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
12 changes: 6 additions & 6 deletions .github/CODEOWNERS
Original file line number Diff line number Diff line change
Expand Up @@ -11,21 +11,21 @@

/content/desktop/ @aevesdocker

/content/desktop/extensions/ @aevesdocker
/content/extensions/ @aevesdocker

/content/desktop/extensions-sdk/ @aevesdocker
/content/extensions-sdk/ @aevesdocker

/content/scout/ @dvdksn

/content/docker-hub/ @aevesdocker @craig-osterhout @stephaurelio
/content/docker-hub/ @aevesdocker @craig-osterhout

/content/engine/ @dvdksn

/content/subscription/ @aevesdocker @stephaurelio
/content/subscription/ @aevesdocker

/content/docker-hub/publish/ @aevesdocker
/content/docker-hub/publish/ @craig-osterhout

/content/docker-hub/official_images/ @aevesdocker
/content/docker-hub/official_images/ @craig-osterhout

/content/registry/ @dvdksn

4 changes: 2 additions & 2 deletions .github/labeler.yml
Original file line number Diff line number Diff line change
Expand Up @@ -111,8 +111,8 @@ area/configuration:
area/extensions:
- changed-files:
- any-glob-to-any-file:
- content/desktop/extensions/**
- content/desktop/extensions-sdk/**
- content/extensions/**
- content/extensions/extensions-sdk/**

area/samples:
- changed-files:
Expand Down
2 changes: 1 addition & 1 deletion content/desktop/_index.md
Original file line number Diff line number Diff line change
Expand Up @@ -54,7 +54,7 @@ Docker Desktop reduces the time spent on complex setups so you can focus on writ
- Docker CLI client
- [Docker Scout](../scout/_index.md) (additional subscription may apply)
- [Docker Build](../build/_index.md)
- [Docker Extensions](./extensions/_index.md)
- [Docker Extensions](../extensions/_index.md)
- [Docker Compose](../compose/_index.md)
- [Docker Content Trust](../engine/security/trust/_index.md)
- [Kubernetes](https://github.com/kubernetes/kubernetes/)
Expand Down
2 changes: 1 addition & 1 deletion content/desktop/settings/linux.md
Original file line number Diff line number Diff line change
Expand Up @@ -257,7 +257,7 @@ Use the **Extensions** tab to:
- **Allow only extensions distributed through the Docker Marketplace**
- **Show Docker Extensions system containers**

For more information about Docker extensions, see [Extensions](../extensions/index.md).
For more information about Docker extensions, see [Extensions](/extensions/index.md).

## Features in development

Expand Down
2 changes: 1 addition & 1 deletion content/desktop/settings/mac.md
Original file line number Diff line number Diff line change
Expand Up @@ -299,7 +299,7 @@ Use the **Extensions** tab to:
- **Allow only extensions distributed through the Docker Marketplace**
- **Show Docker Extensions system containers**

For more information about Docker extensions, see [Extensions](../extensions/index.md).
For more information about Docker extensions, see [Extensions](/extensions/index.md).

## Features in development

Expand Down
2 changes: 1 addition & 1 deletion content/desktop/settings/windows.md
Original file line number Diff line number Diff line change
Expand Up @@ -346,7 +346,7 @@ Use the **Extensions** tab to:
- **Allow only extensions distributed through the Docker Marketplace**
- **Show Docker Extensions system containers**

For more information about Docker extensions, see [Extensions](../extensions/index.md).
For more information about Docker extensions, see [Extensions](/extensions/index.md).

## Features in development

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,13 +2,13 @@
description: Extensions
keywords: Docker Extensions, Docker Desktop, Linux, Mac, Windows
title: Overview of Docker Extensions
toc_min: 1
toc_max: 2
aliases:
- /desktop/extensions/
---

Docker Extensions let you use third-party tools within Docker Desktop to extend its functionality.

You can seamlessly connect your favorite development tools to your application development and deployment workflows. Augment Docker Desktop with debugging, testing, security, and networking functionalities, and create custom add-ons using the Extensions [SDK](../extensions-sdk/index.md).
You can seamlessly connect your favorite development tools to your application development and deployment workflows. Augment Docker Desktop with debugging, testing, security, and networking functionalities, and create custom add-ons using the Extensions [SDK](extensions-sdk/index.md).

Anyone can use Docker Extensions and there is no limit to the number of extensions you can install.

Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,32 +3,33 @@ title: Overview of the Extensions SDK
description: Overall index for Docker Extensions SDK documentation
keywords: Docker, Extensions, sdk
aliases:
- /desktop/extensions-sdk/dev/overview/
- /desktop/extensions-sdk/dev/overview/
- /desktop/extensions-sdk/
grid:
- title: "The build and publish process"
description: Understand the process for building and publishing an extension.
icon: "checklist"
link: "/desktop/extensions-sdk/process/"
link: "/extensions/extensions-sdk/process/"
- title: "Quickstart guide"
description: Follow the quickstart guide to create a basic Docker extension quickly.
icon: "explore"
link: "/desktop/extensions-sdk/quickstart/"
link: "/extensions/extensions-sdk/quickstart/"
- title: "View the design guidelines"
description: Ensure your extension aligns to Docker's design guidelines and principles.
icon: "design_services"
link: "/desktop/extensions-sdk/design/design-guidelines/"
link: "/extensions/extensions-sdk/design/design-guidelines/"
- title: "Publish your extension"
description: Understand how to publish your extension to the Marketplace.
icon: "publish"
link: "/desktop/extensions-sdk/extensions/"
link: "/extensions/extensions-sdk/extensions/"
- title: "Interacting with Kubernetes"
description: Find information on how to interact indirectly with a Kubernetes cluster from your Docker extension.
icon: "multiple_stop"
link: "/desktop/extensions-sdk/dev/kubernetes/"
link: "/extensions/extensions-sdk/guides/kubernetes/"
- title: "Multi-arch extensions"
description: Build your extension for multiple architectures.
icon: "content_copy"
link: "/desktop/extensions-sdk/extensions/multi-arch/"
link: "/extensions/extensions-sdk/extensions/multi-arch/"
---

The resources in this section help you create your own Docker extension.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Extension architecture
description: Docker extension architecture
keywords: Docker, extensions, sdk, metadata
aliases:
- /desktop/extensions-sdk/architecture/
---

Extensions are applications that run inside the Docker Desktop. They're packaged as Docker images, distributed
Expand All @@ -13,19 +15,19 @@ Extensions can be composed of three (optional) components:
- A backend: One or many containerised services running in the Docker Desktop VM
- Executables: Shell scripts or binaries that Docker Desktop copies on the host when installing the extension

![Overview of the three components of an extension](./images/extensions-architecture.png?w=600h=400)
![Overview of the three components of an extension](images/extensions-architecture.png?w=600h=400)

An extension doesn't necessarily need to have all these components, but at least one of them depending on the extension features.
To configure and run those components, Docker Desktop uses a `metadata.json` file. See the
[metadata](./metadata) section for more details.
[metadata](metadata) section for more details.

## The frontend

The frontend is basically a web application made from HTML, Javascript, and CSS. It can be built with a simple HTML
file, some vanilla Javascript or any frontend framework, such as React or Vue.js.

When Docker Desktop installs the extension, it extracts the UI folder from the extension image, as defined by the
`ui` section in the `metadata.json`. See the [ui metadata section](./metadata.md#ui-section) for more details.
`ui` section in the `metadata.json`. See the [ui metadata section](metadata.md#ui-section) for more details.

Every time users click on the **Extensions** tab, Docker Desktop initializes the extension's UI as if it was the first time. When they navigate away from the tab, both the UI itself and all the sub-processes started by it (if any) are terminated.

Expand Down Expand Up @@ -60,7 +62,7 @@ file

Usually, the backend is made of one container that runs within the Docker Desktop VM. Internally, Docker Desktop creates
a Docker Compose project, creates the container from the `image` option of the `vm` section of the `metadata.json`, and
attaches it to the Compose project. See the [ui metadata section](./metadata.md#vm-section) for more details.
attaches it to the Compose project. See the [ui metadata section](metadata.md#vm-section) for more details.

In some cases, a `compose.yml` file can be used instead of an `image`. This is useful when the backend container
needs more specific options, such as mounting volumes or requesting [capabilities](https://docs.docker.com/engine/reference/run/#runtime-privilege-and-linux-capabilities)
Expand All @@ -79,7 +81,7 @@ or named pipe, depending on the operating system. If the backend was listening t
prevent collision with other applications running on the host or in a container already. Also, some users are
running Docker Desktop in constrained environments where they can't open ports on their machines.

![Backend and frontend communication](./images/extensions-arch-2.png?w=500h=300)
![Backend and frontend communication](images/extensions-arch-2.png?w=500h=300)

Finally, the backend can be built with any technology, as long as it can run in a container and listen on a socket.

Expand All @@ -95,15 +97,15 @@ Shipping those executables with the extension ensure that the CLI tool is always
the users' machine.

When Docker Desktop installs the extension, it copies the executables on the host as defined by the `host` section in
the `metadata.json`. See the [ui metadata section](./metadata.md#host-section) for more details.
the `metadata.json`. See the [ui metadata section](metadata.md#host-section) for more details.

![Executable and frontend communication](./images/extensions-arch-3.png?w=250h=300)
![Executable and frontend communication](images/extensions-arch-3.png?w=250h=300)

However, since they're executed on the users' machine, they have to be available to the platform they're running on.
For example, if you want to ship the `kubectl` executable, you need to provide a different version for Windows, Mac,
and Linux. Multi arch images will also need to include binaries built for the right arch (AMD / ARM)


See the [host metadata section](./metadata.md#host-section) for more details.
See the [host metadata section](metadata.md#host-section) for more details.

Learn how to [invoke host binaries](../guides/invoke-host-binaries.md).
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ title: Extension metadata
description: Docker extension metadata
keywords: Docker, extensions, sdk, metadata
aliases:
- /desktop/extensions-sdk/extensions/METADATA
- /desktop/extensions-sdk/extensions/METADATA
- /desktop/extensions-sdk/architecture/metadata/
---

## The metadata.json file
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,7 +3,8 @@ title: Extension security
description: Aspects of the security model of extensions
keywords: Docker, extensions, sdk, security
aliases:
- /desktop/extensions-sdk/guides/security/
- /desktop/extensions-sdk/guides/security/
- /desktop/extensions-sdk/architecture/security/
---

## Extension capabilities
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,9 +3,10 @@ title: Add a backend to your extension
description: Learn how to add a backend to your extension.
keywords: Docker, extensions, sdk, build
aliases:
- /desktop/extensions-sdk/tutorials/minimal-backend-extension/
- /desktop/extensions-sdk/build/minimal-backend-extension/
- /desktop/extensions-sdk/build/set-up/backend-extension-tutorial/
- /desktop/extensions-sdk/tutorials/minimal-backend-extension/
- /desktop/extensions-sdk/build/minimal-backend-extension/
- /desktop/extensions-sdk/build/set-up/backend-extension-tutorial/
- /desktop/extensions-sdk/build/backend-extension-tutorial/
---

Your extension can ship a backend part with which the frontend can interact with. This page provides information on why and how to add a backend.
Expand All @@ -20,7 +21,7 @@ Before you start, make sure you have installed the latest version of [Docker Des
## Why add a backend?

Thanks to the Docker Extensions SDK, most of the time you should be able to do what you need from the Docker CLI
directly from [the frontend](./frontend-extension-tutorial.md#use-the-extension-apis-client).
directly from [the frontend](frontend-extension-tutorial.md#use-the-extension-apis-client).

Nonetheless, there are some cases where you might need to add a backend to your extension. So far, extension
builders have used the backend to:
Expand Down Expand Up @@ -278,7 +279,7 @@ For more information on the `vm` section of the `metadata.json`, see [Metadata](

## Invoke the extension backend from your frontend

Using the [advanced frontend extension example](./frontend-extension-tutorial.md), we can invoke our extension backend.
Using the [advanced frontend extension example](frontend-extension-tutorial.md), we can invoke our extension backend.

Use the Docker Desktop Client object and then invoke the `/hello` route from the backend service with `ddClient.
extension.vm.service.get` that returns the body of the response.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,15 +3,16 @@ title: Create an advanced frontend extension
description: Advanced frontend extension tutorial
keywords: Docker, extensions, sdk, build
aliases:
- /desktop/extensions-sdk/tutorials/react-extension/
- /desktop/extensions-sdk/build/set-up/react-extension/
- /desktop/extensions-sdk/build/set-up/minimal-frontend-using-docker-cli/
- /desktop/extensions-sdk/build/set-up/frontend-extension-tutorial/
- /desktop/extensions-sdk/tutorials/react-extension/
- /desktop/extensions-sdk/build/set-up/react-extension/
- /desktop/extensions-sdk/build/set-up/minimal-frontend-using-docker-cli/
- /desktop/extensions-sdk/build/set-up/frontend-extension-tutorial/
- /desktop/extensions-sdk/build/frontend-extension-tutorial/
---

To start creating your extension, you first need a directory with files which range from the extension’s source code to the required extension-specific files. This page provides information on how to set up an extension with a more advanced frontend.

Before you start, make sure you have installed the latest version of [Docker Desktop](../../release-notes.md).
Before you start, make sure you have installed the latest version of [Docker Desktop](/desktop/release-notes.md).

## Extension folder structure

Expand Down Expand Up @@ -356,7 +357,7 @@ when you need to debug it.

## What's next?

- Add a [backend](./backend-extension-tutorial.md) to your extension.
- Add a [backend](backend-extension-tutorial.md) to your extension.
- Learn how to [test and debug](../dev/test-debug.md) your extension.
- Learn how to [setup CI for your extension](../dev/continuous-integration.md).
- Learn more about extensions [architecture](../architecture/index.md).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -3,13 +3,14 @@ title: Create a simple extension
description: Minimal frontend extension tutorial
keywords: Docker, extensions, sdk, build
aliases:
- /desktop/extensions-sdk/tutorials/minimal-frontend-extension/
- /desktop/extensions-sdk/build/set-up/minimal-frontend-extension/
- /desktop/extensions-sdk/tutorials/minimal-frontend-extension/
- /desktop/extensions-sdk/build/set-up/minimal-frontend-extension/
- /desktop/extensions-sdk/build/minimal-frontend-extension/
---

To start creating your extension, you first need a directory with files which range from the extension’s source code to the required extension-specific files. This page provides information on how to set up a minimal frontend extension based on plain HTML.

Before you start, make sure you have installed the latest version of [Docker Desktop](../../release-notes.md).
Before you start, make sure you have installed the latest version of [Docker Desktop](/desktop/release-notes.md).

> Tip
>
Expand Down Expand Up @@ -102,7 +103,7 @@ The left-hand menu displays a new tab with the name of your extension.

## What's next?

- Build a more [advanced frontend](./frontend-extension-tutorial.md) extension.
- Build a more [advanced frontend](frontend-extension-tutorial.md) extension.
- Learn how to [test and debug](../dev/test-debug.md) your extension.
- Learn how to [setup CI for your extension](../dev/continuous-integration.md).
- Learn more about extensions [architecture](../architecture/index.md).
Original file line number Diff line number Diff line change
Expand Up @@ -3,8 +3,9 @@ title: UI styling overview for Docker extensions
description: Docker extension design
keywords: Docker, extensions, design
aliases:
- /desktop/extensions-sdk/design/design-overview/
- /desktop/extensions-sdk/design/overview/
- /desktop/extensions-sdk/design/design-overview/
- /desktop/extensions-sdk/design/overview/
- /desktop/extensions-sdk/design/
---

Our Design System is a constantly evolving set of specifications that aim to ensure visual consistency across Docker products, and meet [level AA accessibility standards](https://www.w3.org/WAI/WCAG2AA-Conformance). We've opened parts of it to extension authors, documenting basic styles (color, typography) and components. See: [Docker Extensions Styleguide](https://www.figma.com/file/U7pLWfEf6IQKUHLhdateBI/Docker-Design-Guidelines?node-id=1%3A28771).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Design guidelines for Docker extensions
description: Docker extension design
keywords: Docker, extensions, design
aliases:
- /desktop/extensions-sdk/design/design-guidelines/
---

At Docker, we aim to build tools that integrate into a user's existing workflows rather than requiring them to adopt new ones. We strongly recommend that you follow these guidelines when creating extensions. We review and approve your Marketplace publication based on these requirements.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Docker design principles
description: Docker extension design
keywords: Docker, extensions, design
aliases:
- /desktop/extensions-sdk/design/design-principles/
---

## Provide actionable guidance
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: MUI best practices
description: Guidelines for using MUI to maximise compatibility with Docker Desktop
keywords: Docker, extensions, mui, theme, theming, material-ui, material
aliases:
- /desktop/extensions-sdk/design/mui-best-practices/
---

This article assumes you're following our recommended practice by using our [Material UI theme](https://www.npmjs.com/package/@docker/docker-mui-theme).
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Extension Backend
description: Docker extension API
keywords: Docker, extensions, sdk, API
aliases:
- /desktop/extensions-sdk/dev/api/backend/
---

The `ddClient.extension.vm` object can be used to communicate with the backend defined in the [vm section](../../architecture/metadata.md#vm-section) of the extension metadata.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Navigation
description: Docker extension API
keywords: Docker, extensions, sdk, API
aliases:
- /desktop/extensions-sdk/dev/api/dashboard-routes-navigation/
---

`ddClient.desktopUI.navigate` enables navigation to specific screens of Docker Desktop such as the containers tab, the images tab, or a specific container's logs.
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Dashboard
description: Docker extension API
keywords: Docker, extensions, sdk, API
aliases:
- /desktop/extensions-sdk/dev/api/dashboard/
---

## User notifications
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Docker
description: Docker extension API
keywords: Docker, extensions, sdk, API
aliases:
- /desktop/extensions-sdk/dev/api/docker/
---

## Docker objects
Expand Down
Original file line number Diff line number Diff line change
Expand Up @@ -2,6 +2,8 @@
title: Extension UI API
description: Docker extension development overview
keywords: Docker, extensions, sdk, development
aliases:
- /desktop/extensions-sdk/dev/api/overview/
---

The extensions UI runs in a sandboxed environment and doesn't have access to any
Expand Down
Loading