diff --git a/.vscode/docker.code-snippets b/.vscode/docker.code-snippets
index 18fde97b1548..4342ae2890ee 100644
--- a/.vscode/docker.code-snippets
+++ b/.vscode/docker.code-snippets
@@ -39,6 +39,16 @@
],
"description": "Insert a Hugo tabs block with two tabs and snippet stops for names and content",
},
+ "Insert Hugo code block (no title)": {
+ "prefix": ["codeblock", "block"],
+ "body": ["```${1:json}", "$2", "```", ""],
+ "description": "Insert a Hugo code block with an optional title",
+ },
+ "Insert Hugo code block (with title)": {
+ "prefix": ["codeblock", "codettl", "block"],
+ "body": ["```${1:json} {title=\"$2\"}", "$3", "```", ""],
+ "description": "Insert a Hugo code block with an optional title",
+ },
"Insert a Button": {
"prefix": ["button"],
"body": ["{{< button url=\"$1\" text=\"$2\" >}}"],
diff --git a/_vale/.vale-config/0-Hugo.ini b/_vale/.vale-config/0-Hugo.ini
deleted file mode 100644
index 4347ca9e902a..000000000000
--- a/_vale/.vale-config/0-Hugo.ini
+++ /dev/null
@@ -1,10 +0,0 @@
-[*.md]
-# Exclude `{{< ... >}}`, `{{% ... %}}`, [Who]({{< ... >}})
-TokenIgnores = ({{[%<] .* [%>]}}.*?{{[%<] ?/.* [%>]}}), \
-(\[.+\]\({{< .+ >}}\)), \
-[^\S\r\n]({{[%<] \w+ .+ [%>]}})\s, \
-[^\S\r\n]({{[%<](?:/\*) .* (?:\*/)[%>]}})\s
-
-# Exclude `{{< myshortcode `This is some HTML, ... >}}`
-BlockIgnores = (?sm)^({{[%<] \w+ [^{]*?\s[%>]}})\n$, \
-(?s) *({{< highlight [^>]* ?>}}.*?{{< ?/ ?highlight >}})
diff --git a/assets/css/utilities.css b/assets/css/utilities.css
index 99471943da6d..90931e66694e 100644
--- a/assets/css/utilities.css
+++ b/assets/css/utilities.css
@@ -144,12 +144,8 @@
font-size: 0.875em;
border: 1px solid;
border-radius: 0.25rem; /* theme("spacing.1") fallback */
- background: var(--color-white-main);
- border-color: var(--color-gray-300);
- .dark & {
- background: var(--color-gray-200);
- border-color: var(--color-gray-400);
- }
+ border: none;
+ background: transparent;
&::before,
&::after {
content: none !important;
@@ -185,7 +181,7 @@
}
.highlight {
- @apply my-4 overflow-x-auto p-3;
+ @apply my-0 overflow-x-auto p-2;
/* LineTableTD */
.lntd {
diff --git a/assets/icons/toolbox.svg b/assets/icons/toolkit.svg
similarity index 100%
rename from assets/icons/toolbox.svg
rename to assets/icons/toolkit.svg
diff --git a/content/manuals/_index.md b/content/manuals/_index.md
index 16007f912b4b..f90b12bc4887 100644
--- a/content/manuals/_index.md
+++ b/content/manuals/_index.md
@@ -42,7 +42,7 @@ params:
link: /model-runner/
- title: MCP Catalog and Toolkit
description: Augment your AI workflow with MCP servers.
- icon: /assets/icons/toolbox.svg
+ icon: /icons/toolkit.svg
link: /ai/mcp-catalog-and-toolkit/
products:
- title: Docker Desktop
diff --git a/content/manuals/ai/gordon/mcp/_index.md b/content/manuals/ai/gordon/mcp/_index.md
index af49c24ed450..ebbf14f51c62 100644
--- a/content/manuals/ai/gordon/mcp/_index.md
+++ b/content/manuals/ai/gordon/mcp/_index.md
@@ -11,10 +11,6 @@ grid:
description: Configure MCP tools on a per-project basis.
icon: manufacturing
link: /ai/gordon/mcp/yaml
-- title: MCP Server
- description: Use Gordon as an MCP server
- icon: dns
- link: /ai/gordon/mcp/gordon-mcp-server/
aliases:
- /desktop/features/gordon/mcp/
---
@@ -33,4 +29,4 @@ external APIs, etc.
Gordon, along with other MCP clients like Claude Desktop or Cursor, can interact
with MCP servers running as containers.
-{{< grid >}}
\ No newline at end of file
+{{< grid >}}
diff --git a/content/manuals/ai/gordon/mcp/gordon-mcp-server.md b/content/manuals/ai/gordon/mcp/gordon-mcp-server.md
deleted file mode 100644
index 4b0577abb384..000000000000
--- a/content/manuals/ai/gordon/mcp/gordon-mcp-server.md
+++ /dev/null
@@ -1,45 +0,0 @@
----
-title: Gordon as an MCP server
-description: How to use Gordon as an MCP server
-keywords: ai, mcp, gordon
-aliases:
- - /desktop/features/gordon/mcp/gordon-mcp-server/
----
-
-In addition to functioning as an MCP client, Gordon can also act as an MCP
-server. This means that all the tools configured in the toolbox section of
-Gordon can be exposed to another MCP client like Claude Desktop, Cursor and
-others.
-
-To use Gordon’s built-in tools in other MCP clients, configure your client of
-choice to use the `docker ai mcpserver` command. This allows Gordon to serve its
-built-in tools via the MCP protocol for various clients.
-
-For example, to enable Gordon’s tools in Claude Desktop, add the following
-configuration to the Claude configuration file:
-
-```json
-{
- "mcpServers": {
- "gordon": {
- "command": "docker",
- "args": ["ai", "mcpserver"]
- }
- }
-}
-```
-
-This setup ensures that Claude Desktop can communicate with Gordon as an MCP
-server, leveraging its built-in tools. You can follow the [Claude Desktop
-documentation](https://modelcontextprotocol.io/quickstart/user) to explore
-further.
-
-### Tool permissions and security
-
-These tools operate with the same permissions as the user running the
-application.
-
-Any potentially destructive tool call, changing files, deleting images or
-stopping containers will ask for your confirmation before proceeding.
-
-
diff --git a/content/manuals/ai/mcp-catalog-and-toolkit/_index.md b/content/manuals/ai/mcp-catalog-and-toolkit/_index.md
index ef550dacb32f..c91713b27fc5 100644
--- a/content/manuals/ai/mcp-catalog-and-toolkit/_index.md
+++ b/content/manuals/ai/mcp-catalog-and-toolkit/_index.md
@@ -5,10 +5,10 @@ params:
sidebar:
group: AI
badge:
- color: green
- text: New
+ color: blue
+ text: Beta
weight: 30
-description: Learn about Docker's MCP catalog on Docker Hub and how to use it with the MCP Toolkit extension
+description: Learn about Docker's MCP catalog on Docker Hub
keywords: Docker, ai, mcp servers, ai agents, extension, docker desktop, llm, docker hub
grid:
- title: MCP Catalog
@@ -16,8 +16,8 @@ grid:
icon: hub
link: /ai/mcp-catalog-and-toolkit/catalog/
- title: MCP Toolkit
- description: Learn about how to use the MCP Toolkit extension on Docker Desktop
- icon: manufacturing
+ description: Learn about the MCP toolkit to manage MCP servers and clients
+ icon: /icons/toolkit.svg
link: /ai/mcp-catalog-and-toolkit/toolkit/
---
@@ -25,19 +25,28 @@ The Model Context Protocol (MCP) is a modern standard that transforms AI agents
As agents move into production, MCP solves common integration challenges — interoperability, reliability, and security — by providing a consistent, decoupled, and scalable interface between agents and tools. Just as containers redefined software deployment, MCP is reshaping how AI systems interact with the world.
+> **Example**
+>
+> In simple terms, an MCP server is a way for an LLM to interact with an external system.
+>
+> For example:
+> If you ask a model to create a meeting, it needs to communicate with your calendar app to do that.
+> An MCP server for your calendar app provides _tools_ that perform atomic actions, such as:
+> "getting the details of a meeting" or "creating a new meeting".
+
## What is Docker MCP Catalog and Toolkit?
-Docker MCP Catalog and Toolkit is a comprehensive solution for securely building, sharing, and running MCP tools. It simplifies the developer experience across four key areas:
+Docker MCP Catalog and Toolkit is a comprehensive solution for securely building, sharing, and running MCP tools. It simplifies the developer experience across these key areas:
- Discovery: A central catalog with verified, versioned tools
- Credential Management: OAuth-based and secure by default
- Execution: Tools run in isolated, containerized environments
- Portability: Use MCP tools across Claude, Cursor, VS Code, and more — no code changes needed
-With Docker Hub and the Docker Desktop extension, you can:
+With Docker Hub and the MCP Toolkit, you can:
- Launch MCP servers in seconds
- Add tools via CLI or GUI
-- Rely on Docker’s pull-based infrastructure for trusted delivery
+- Rely on Docker's pull-based infrastructure for trusted delivery
{{< grid >}}
diff --git a/content/manuals/ai/mcp-catalog-and-toolkit/catalog.md b/content/manuals/ai/mcp-catalog-and-toolkit/catalog.md
index 388f3925d707..96d3b6fb233d 100644
--- a/content/manuals/ai/mcp-catalog-and-toolkit/catalog.md
+++ b/content/manuals/ai/mcp-catalog-and-toolkit/catalog.md
@@ -4,30 +4,32 @@ description: Learn about the benefits of the MCP Catalog, how you can use it, an
keywords: docker hub, mcp, mcp servers, ai agents, calatog, docker
---
-The [Docker MCP Catalog](https://hub.docker.com/catalogs/mcp) is a centralized, trusted registry for discovering, sharing, and running MCP-compatible tools. Seamlessly integrated into Docker Hub, it offers verified, versioned, and curated MCP servers packaged as Docker images.
+The [Docker MCP Catalog](https://hub.docker.com/catalogs/mcp) is a centralized, trusted registry for discovering, sharing, and running MCP-compatible tools. Seamlessly integrated into Docker Hub, it offers verified, versioned, and curated MCP servers packaged as Docker images. The catalog is also available in Docker Desktop.
-The catalog also solves common MCP server challenges:
+The catalog solves common MCP server challenges:
- Environment conflicts: Tools often need specific runtimes that may clash with existing setups.
- Lack of isolation: Traditional setups risk exposing the host system.
- Setup complexity: Manual installation and configuration result in slow adoption.
- Inconsistency across platforms: Tools may behave unpredictably on different OSes.
-With Docker, each MCP server runs as a self-contained container so it is portable, isolated, and consistent. You can launch tools instantly using Docker CLI or Docker Desktop, without worrying about dependencies or compatibility.
+With Docker, each MCP server runs as a self-contained container so it is
+portable, isolated, and consistent. You can launch tools instantly using Docker
+CLI or Docker Desktop, without worrying about dependencies or compatibility.
## Key features
- Over 100 verified MCP servers in one place
- Publisher verification and versioned releases
-- Pull-based distribution using Docker’s infrastructure
+- Pull-based distribution using Docker's infrastructure
- Tools provided by partners such as New Relic, Stripe, Grafana, and more
## How it works
-Each tool in the MCP Catalog is packaged as a Docker image with metadata. Developers can:
+Each tool in the MCP Catalog is packaged as a Docker image with metadata:
-- Discover tools via Docker Hub under the mcp/ namespace.
-- Connect tools to their preferred agents with simple configuration through the [MCP Toolkit](toolkit.md)
+- Discover tools via Docker Hub under the `mcp/` namespace.
+- Connect tools to their preferred agents with simple configuration through the [MCP Toolkit](toolkit.md).
- Pull and run tools using Docker Desktop or the CLI.
Each catalog entry provides:
@@ -36,59 +38,10 @@ Each catalog entry provides:
- Version history
- Example configuration for agent integration
-## Example: How to use an MCP server from Docker Hub
+## Use an MCP server from the catalog
-The following example uses the Puppeteer MCP server to take a screenshot of a website and invert the colors using Claude Desktop.
-
-{{< tabs >}}
-{{< tab name="Using the MCP Toolkit (Recommended)" >}}
-
-1. Make sure you have [installed the Docker Desktop Docker MCP Toolkit extension](toolkit.md).
-2. From the extension, search for the Puppeteer MCP server in the **MCP Servers** tab, and toggle it on to enable.
-3. From the **MCP Clients** tab, select the **Connect** button for Claude Desktop.
-4. Within Claude Desktop, submit the following prompt using the Sonnet 3.5 model:
-
- ```text
- Take a screenshot of docs.docker.com and then invert the colors
- ```
-
-{{< /tab >}}
-{{< tab name="Manually set it up" >}}
-
-1. Update the `claude_desktop_config.json` file to include the following configuration:
-
- ```json
- {
- "mcpServers": {
- "puppeteer": {
- "command": "docker",
- "args": [
- "run",
- "-i",
- "--rm",
- "-e",
- "DOCKER_CONTAINER",
- "mcp/puppeteer"
- ],
- "env": {
- "DOCKER_CONTAINER": "true"
- }
- }
- }
- }
- ```
-2. Restart Claude Desktop to apply the changed config file.
-3. Submit the following prompt using the Sonnet 3.5 model:
-
- ```text
- Take a screenshot of docs.docker.com and then invert the colors
- ```
-
-Once you've given your consent to use the new tools, Claude spins up the Puppeteer MCP server inside a container, navigates to the target URL, captures and modify the page, and returns the screenshot.
-
-{{< /tab >}}
-{{< /tabs >}}
+To use an MCP server from the catalog, see [MCP toolkit](toolkit.md).
## Contribute an MCP server to the catalog
-If you would like to add you MCP server to the Docker MCP Catalog, fill out the Docker [MCP submission form](https://www.docker.com/products/mcp-catalog-and-toolkit/#get_updates).
\ No newline at end of file
+To add an MCP server to the Docker MCP catalog, fill out the Docker [MCP submission form](https://www.docker.com/products/mcp-catalog-and-toolkit/#get_updates).
diff --git a/content/manuals/ai/mcp-catalog-and-toolkit/toolkit.md b/content/manuals/ai/mcp-catalog-and-toolkit/toolkit.md
index 5fbc0208f45b..0fcb34ee3a33 100644
--- a/content/manuals/ai/mcp-catalog-and-toolkit/toolkit.md
+++ b/content/manuals/ai/mcp-catalog-and-toolkit/toolkit.md
@@ -1,53 +1,125 @@
---
title: MCP Toolkit
-description:
-keywords:
+description: Use the MCP Toolkit to set up MCP servers and MCP clients.
+keywords: Docker MCP Toolkit, MCP server, MCP client, AI agents
+aliases:
+ - /desktop/features/gordon/mcp/gordon-mcp-server/
+ - /ai/gordon/mcp/gordon-mcp-server/
---
-The Docker MCP Toolkit is a Docker Desktop extension local that enables seamless setup, management, and execution of containerized MCP servers and their connections to AI agents. It removes the friction from tool usage by offering secure defaults, one-click setup, and support for a growing ecosystem of LLM-based clients. It is the fastest path from MCP tool discovery to local execution.
+The Docker MCP Toolkit enables seamless setup, management, and execution of containerized MCP servers and their connections to AI agents. It removes the friction from tool usage by offering secure defaults, one-click setup, and support for a growing ecosystem of LLM-based clients. It is the fastest path from MCP tool discovery to local execution.
## Key features
-- Cross-LLM compatibility: Works out of the box with Claude Desktop, Cursor, Continue.dev, and [Gordon](/manuals/ai/gordon/_index.md).
-- Integrated tool discovery: Browse and launch MCP servers that are available in the Docker MCP Catalog, directly from Docker Desktop.
-- No manual setup: Skip dependency management, runtime setup, and manual server configuration.
+- Cross-LLM compatibility: Instantly works with Claude Desktop, Cursor, Continue.dev, and [Gordon](/manuals/ai/gordon/_index.md).
+- Integrated tool discovery: Browse and launch MCP servers from the Docker MCP Catalog directly in Docker Desktop.
+- Zero manual setup: No dependency management, runtime configuration, or server setup required.
+- Functions as both an MCP server aggregator and a gateway for clients to access installed MCP servers.
-## How it works
+
-The **MCP Servers** tab lists all available servers from the Docker MCP Catalog. Each entry includes:
+## Security
-- Tool name and description
-- Partner/publisher
-- Number of callable tools and what they are
+The Docker MCP Toolkit combines passive and active measures to reduce attack
+surfaces and ensure safe runtime behavior.
-To enable an MCP server, simply use the toggle switch to toggle it on.
+### Passive security
-> [!NOTE]
->
-> Some MCP servers requires secrets or tokens to be configured before it can be enabled. Instructions on how to do this can be found on each MCP servers' repository.
+- Image signing and attestation: All MCP server images under `mcp/` in the [catalog](catalog.md)
+ are built by Docker and digitally
+ signed to verify their source and integrity. Each image includes a Software
+ Bill of Materials (SBOM) for full transparency.
-The **MCP Clients** tab lets you connect your enabled MCP servers to supported agents. Connection is as simple as selecting **Connect**, so you can switch between LLM providers without altering your MCP server integrations or security configurations.
+### Active security
-## Installation
+Security at runtime is enforced through resource and access limitations:
-To install the Docker MCP Toolkit extension:
+- CPU allocation: MCP tools are run in their own container. They are
+ restricted to 1 CPU, limiting the impact of potential misuse of computing
+ resources.
-1. In the Docker Desktop Dashboard, select the **Extensions** view, and then select **Manage**.
-2. Select the **Browse** tab and search for **Docker MCP Toolkit**.
-3. On the **Docker MCP Toolkit** result, select install.
+- Memory allocation: Containers for MCP tools are limited to 2 GB.
-The extension then appears under the **My extensions** tab.
+- Filesystem access: By default, MCP Servers have no access to the host filesystem.
+ The user explicitly selects the servers that will be granted file mounts.
-### Example
+- Interception of tool requests: Requests to and from tools that contain sensitive
+ information such as secrets are blocked.
-The following example assumes you have already installed and set up Claude Desktop.
+## Enable Docker MCP Toolkit
-1. In the Docker MCP Toolkit extension, search for the Puppeteer MCP server in the **MCP Servers** tab, and toggle it on to enable.
-2. From the **MCP Clients** tab, select the **Connect** button for Claude Desktop.
-3. Within Claude Desktop, submit the following prompt using the Sonnet 3.5 model:
+1. Open the Docker Desktop settings and select **Beta features**.
+2. Select **Enable Docker MCP Toolkit**.
+3. Select **Apply & restart**.
+
+>[!NOTE]
+>If you have the MCP Toolkit _extension_ installed, you can uninstall it.
+
+## Install an MCP server
+
+To install an MCP server:
+
+1. In Docker Desktop, select **MCP Toolkit** and select the **Catalog** tab.
+ When you select a server you can see the following
+ information:
+
+ - Tool name and description
+ - Partner/publisher
+ - The list of callable tools the server provides.
+
+2. Find the MCP server of your choice and select the **Plus** icon.
+3. Optional: Some servers require extra configuration. To configure them, select
+ the **Config** tab and follow the instructions available on the repository of the provider of the MCP server.
+
+> [!TIP]
+> By default, the Gordon [client](#install-an-mcp-client) is enabled,
+> which means Gordon can automatically interact with your MCP servers.
+
+To learn more about the MCP server catalog, see [Catalog](catalog.md).
+
+### Example: Use the GitHub MCP server
+
+Imagine you want to enable Ask Gordon to interact with your GitHub account:
+
+1. From the **MCP Toolkit** menu, select the **Catalog** tab and find
+ the **GitHub Official** server and add it.
+2. In the server's **Config** tab, insert your token generated from
+ your [GitHub account](https://github.com/settings/personal-access-tokens).
+3. In the **Clients** tab, ensure Gordon is connected.
+4. From the **Ask Gordon** menu, you can now send requests related to your
+ GitHub account, in accordance to the tools provided by the GitHub MCP server. To test it, ask Gordon:
```text
- Take a screenshot of docs.docker.com and then invert the colors
+ What's my GitHub handle?
```
-Once you've given your consent to use the new tools, Claude spins up the Puppeteer MCP server inside a container, navigates to the target URL, captures and modify the page, and returns the screenshot.
+ Make sure to allow Gordon to interact with GitHub by selecting **Always allow** in Gordon's answer.
+
+## Install an MCP client
+
+When you have installed MCP servers, you can add clients to the MCP Toolkit. These clients
+can interact with the installed MCP servers, turning the MCP Toolkit into a gateway.
+
+To install a client:
+
+1. In Docker Desktop, select **MCP Toolkit** and select the **Clients** tab.
+2. Find the client of your choice and select **Connect**.
+
+Your client can now interact with the MCP Toolkit.
+
+### Example: Use Claude Desktop as a client
+
+Imagine you have Claude Desktop installed, and you want to use the GitHub MCP server,
+and the Puppeteer MCP server, you do not have to install the servers in Claude Desktop.
+You can simply install these 2 MCP servers in the MCP Toolkit,
+and add Claude Desktop as a client:
+
+1. From the **MCP Toolkit** menu, select the **Catalog** tab and find the **Puppeteer** server and add it.
+2. Repeat for the **GitHub** server.
+3. From the **Clients** tab, select **Connect** next to **Claude Desktop**. Restart
+ Claude Desktop if it's running, and it can now access all the servers in the MCP Toolkit.
+4. Within Claude Desktop, run a test by submitting the following prompt using the Sonnet 3.5 model:
+
+ ```text
+ Take a screenshot of docs.docker.com and then invert the colors
+ ```
diff --git a/content/manuals/desktop/features/dev-environments/_index.md b/content/manuals/desktop/features/dev-environments/_index.md
deleted file mode 100644
index def2e621485e..000000000000
--- a/content/manuals/desktop/features/dev-environments/_index.md
+++ /dev/null
@@ -1,52 +0,0 @@
----
-description: Dev Environments
-keywords: Dev Environments, share, local, Compose
-title: Overview of Dev Environments
-linkTitle: Dev Environments
-weight: 130
-aliases:
-- /desktop/dev-environments/
-params:
- sidebar:
- badge:
- color: blue
- text: Beta
----
-
-{{% include "dev-envs-changing.md" %}}
-
-{{< summary-bar feature_name="Dev Environments" >}}
-
-Dev Environments let you create a configurable developer environment with all the code and tools you need to quickly get up and running.
-
-It uses tools built into code editors that allows Docker to access code mounted into a container rather than on your local host. This isolates the tools, files and running services on your machine allowing multiple versions of them to exist side by side.
-
-You can use Dev Environments through the intuitive GUI in Docker Desktop Dashboard or straight from your terminal with the new [`docker dev` CLI plugin](dev-cli.md).
-
-## Use Dev Environments
-
-To use Dev Environments:
-1. Navigate to the **Features in Development** tab in **Settings**.
-2. On the **Beta** tab, select **Turn on Dev Environments**.
-3. Select **Apply & restart**.
-
-The Dev Environments tab is now visible in Docker Desktop Dashboard.
-
-## How does it work?
-
->**Changes to Dev Environments with Docker Desktop 4.13**
->
->Docker has simplified how you configure your dev environment project. All you need to get started is a `compose-dev.yaml` file. If you have an existing project with a `.docker/` folder this is automatically migrated the next time you launch.
-
-Dev Environments is powered by [Docker Compose](/compose/). This allows Dev Environments to take advantage of all the benefits and features of Compose whilst adding an intuitive GUI where you can launch environments with the click of a button.
-
-Every dev environment you want to run needs a `compose-dev.yaml` file which configures your application's services and lives in your project directory. You don't need to be an expert in Docker Compose or write a `compose-dev.yaml` file from scratch as Dev Environments creates a starter `compose-dev.yaml` files based on the main language in your project.
-
-You can also use the many [sample dev environments](https://github.com/docker/awesome-compose) as a starting point for how to integrate different services. Alternatively, see [Set up a dev environment](set-up.md) for more information.
-
-## What's next?
-
-Learn how to:
-- [Launch a dev environment](create-dev-env.md)
-- [Set up a dev environment](set-up.md)
-- [Distribute your dev environment](share.md)
diff --git a/content/manuals/desktop/features/dev-environments/create-dev-env.md b/content/manuals/desktop/features/dev-environments/create-dev-env.md
deleted file mode 100644
index 51a833c5d2c0..000000000000
--- a/content/manuals/desktop/features/dev-environments/create-dev-env.md
+++ /dev/null
@@ -1,132 +0,0 @@
----
-description: Dev Environments
-keywords: Dev Environments, share, Docker Desktop, Compose, launch
-title: Launch a dev environment
-aliases:
-- /desktop/dev-environments/create-compose-dev-env/
-- /desktop/dev-environments/create-dev-env/
-weight: 10
----
-
-{{% include "dev-envs-changing.md" %}}
-
-You can launch a dev environment from a:
-- Git repository
-- Branch or tag of a Git repository
-- Sub-folder of a Git repository
-- Local folder
-
-This does not conflict with any of the local files or local tooling set up on your host.
-
->Tip
->
->Install the [Dev Environments browser extension](https://github.com/docker/dev-envs-extension) for [Chrome](https://chrome.google.com/webstore/detail/docker-dev-environments/gnagpachnalcofcblcgdbofnfakdbeka) or [Firefox](https://addons.mozilla.org/en-US/firefox/addon/docker-dev-environments/), to launch a dev environment faster.
-
-## Prerequisites
-
-To get started with Dev Environments, you must also install the following tools and extension on your machine:
-
-- [Git](https://git-scm.com). Make sure add Git to your PATH if you're a Windows user.
-- [Visual Studio Code](https://code.visualstudio.com/)
-- [Visual Studio Code Remote Containers Extension](https://marketplace.visualstudio.com/items?itemName=ms-vscode-remote.remote-containers)
-
- After Git is installed, restart Docker Desktop. Select **Quit Docker Desktop**, and then start it again.
-
-## Launch a dev environment from a Git repository
-
-> [!NOTE]
->
-> When cloning a Git repository using SSH, ensure you've added your SSH key to the ssh-agent. To do this, open a terminal and run `ssh-add `.
-
-> [!IMPORTANT]
->
-> If you have enabled the WSL 2 integration in Docker Desktop for Windows, make sure you have an SSH agent running in your WSL 2 distribution.
-
-{{< accordion title="How to start an SSH agent in WSL 2" >}}
-
-If your WSL 2 distribution doesn't have an `ssh-agent` running, you can append this script at the end of your profile file (that is: ~/.profile, ~/.zshrc, ...).
-
-```bash
-SSH_ENV="$HOME/.ssh/agent-environment"
-function start_agent {
- echo "Initializing new SSH agent..."
- /usr/bin/ssh-agent | sed 's/^echo/#echo/' > "${SSH_ENV}"
- echo succeeded
- chmod 600 "${SSH_ENV}"
- . "${SSH_ENV}" > /dev/null
-}
-# Source SSH settings, if applicable
-if [ -f "${SSH_ENV}" ]; then
- . "${SSH_ENV}" > /dev/null
- ps -ef | grep ${SSH_AGENT_PID} | grep ssh-agent$ > /dev/null || {
- start_agent;
- }
-else
- start_agent;
-fi
-```
-
-{{< /accordion >}}
-
-To launch a dev environment:
-
-1. From the **Dev Environments** tab in Docker Dashboard, select **Create**. The **Create a Dev Environment** dialog displays.
-2. Select **Get Started**.
-3. Optional: Provide a name for you dev environment.
-4. Select **Existing Git repo** as the source and then paste your Git repository link into the field provided.
-5. Choose your IDE. You can choose either:
- - **Visual Studio Code**. The Git repository is cloned into a Volume and attaches to your containers. This allows you to develop directly inside of them using Visual Studio Code.
- - **Other**. The Git repository is cloned into your chosen local directory and attaches to your containers as a bind mount. This shares the directory from your computer to the container, and allows you to develop using any local editor or IDE.
-6. Select **Continue**.
-
-To launch the application, run the command `make run` in your terminal. This opens an http server on port 8080. Open [http://localhost:8080](http://localhost:8080) in your browser to see the running application.
-
-
-## Launch from a specific branch or tag
-
-You can launch a dev environment from a specific branch, for example a branch corresponding to a Pull Request, or a tag by adding `@mybranch` or `@tag` as a suffix to your Git URL:
-
- `https://github.com/dockersamples/single-dev-env@mybranch`
-
- or
-
- `git@github.com:dockersamples/single-dev-env.git@mybranch`
-
-Docker then clones the repository with your specified branch or tag.
-
-## Launch from a subfolder of a Git repository
-
->Note
->
->Currently, Dev Environments is not able to detect the main language of the subdirectory. You need to define your own base image or services in a `compose-dev.yaml`file located in your subdirectory. For more information on how to configure, see the [React application with a Spring backend and a MySQL database sample](https://github.com/docker/awesome-compose/tree/master/react-java-mysql) or the [Go server with an Nginx proxy and a Postgres database sample](https://github.com/docker/awesome-compose/tree/master/nginx-golang-postgres).
-
-1. From **Dev Environments** in Docker Dashboard, select **Create**. The **Create a Dev Environment** dialog displays.
-2. Select **Get Started**.
-3. Optional: Provide a name for you dev environment.
-4. Select **Existing Git repo** as the source and then paste the link of your Git repo subfolder into the field provided.
-5. Choose your IDE. You can choose either:
- - **Visual Studio Code**. The Git repository is cloned into a Volume and attaches to your containers. This allows you to develop directly inside of them using Visual Studio Code.
- - **Other**. The Git repository is cloned into your chosen local directory and attaches to your containers as a bind mount. This shares the directory from your computer to the container, and allows you to develop using any local editor or IDE.
-6. Select **Continue**.
-
-To launch the application, run the command `make run` in your terminal. This opens an http server on port 8080. Open [http://localhost:8080](http://localhost:8080) in your browser to see the running application.
-
-## Launch from a local folder
-
-1. From **Dev Environments** in Docker Dashboard, select **Create**. The **Create a Dev Environment** dialog displays.
-2. Select **Get Started**.
-3. Optional: Provide a name for your dev environment.
-4. Choose **Local directory** as the source.
-5. Select **Select** to open the root directory of the code that you would like to work on.
-
- A directory from your computer is bind mounted to the container, so any changes you make locally is reflected in the dev environment. You can use an editor or IDE of your choice.
-
-> [!NOTE]
->
-> When using a local folder for a dev environment, file changes are synchronized between your environment container and your local files. This can affect the performance inside the container, depending on the number of files in your local folder and the operations performed in the container.
-
-## What's next?
-
-Learn how to:
-- [Set up a dev environment](set-up.md)
-- [Distribute your dev environment](share.md)
diff --git a/content/manuals/desktop/features/dev-environments/dev-cli.md b/content/manuals/desktop/features/dev-environments/dev-cli.md
deleted file mode 100644
index 2f7d66d5f9aa..000000000000
--- a/content/manuals/desktop/features/dev-environments/dev-cli.md
+++ /dev/null
@@ -1,120 +0,0 @@
----
-description: Set up a dev Environments
-keywords: Dev Environments, share, docker dev, Docker Desktop
-title: Use the docker dev CLI plugin
-aliases:
-- /desktop/dev-environments/dev-cli/
----
-
-{{% include "dev-envs-changing.md" %}}
-
-Use the new `docker dev` CLI plugin to get the full Dev Environments experience from the terminal in addition to the Dashboard.
-
-It is available with [Docker Desktop 4.13.0 and later](/manuals/desktop/release-notes.md).
-
-### Usage
-
-```bash
-docker dev [OPTIONS] COMMAND
-```
-
-### Commands
-
-| Command | Description |
-|:---------------------|:-----------------------------------------|
-| `check` | Check Dev Environments |
-| `create` | Create a new dev environment |
-| `list` | Lists all dev environments |
-| `logs` | Traces logs from a dev environment |
-| `open` | Open Dev Environment with the IDE |
-| `rm` | Removes a dev environment |
-| `start` | Starts a dev environment |
-| `stop` | Stops a dev environment |
-| `version` | Shows the Docker Dev version information |
-
-### `docker dev check`
-
-#### Usage
-
-`docker dev check [OPTIONS]`
-
-#### Options
-
-| Name, shorthand | Description |
-|:---------------------|:------------------------------------|
-| `--format`,`-f` | Format the output. |
-
-### `docker dev create`
-
-#### Usage
-
-`docker dev create [OPTIONS] REPOSITORY_URL`
-
-#### Options
-
-| Name, shorthand | Description |
-|:---------------------|:----------------------------------------------------------|
-| `--detach`,`-d` | Detach creates a Dev Env without attaching to it's logs. |
-| `--open`,`-o` | Open IDE after a successful creation |
-
-### `docker dev list`
-
-#### Usage
-
-`docker dev list [OPTIONS]`
-
-#### Options
-
-| Name, shorthand | Description |
-|:---------------------|:------------------------------|
-| `--format`,`-f` | Format the output |
-| `--quiet`,`-q` | Only show dev environments names |
-
-### `docker dev logs`
-
-#### Usage
-
-`docker dev logs [OPTIONS] DEV_ENV_NAME`
-
-### `docker dev open`
-
-#### Usage
-
-`docker dev open DEV_ENV_NAME CONTAINER_REF [OPTIONS]`
-
-#### Options
-
-| Name, shorthand | Description |
-|:---------------------|:----------------------|
-| `--editor`,`-e` | Editor. |
-
-### `docker dev rm`
-
-#### Usage
-
-`docker dev rm DEV_ENV_NAME`
-
-### `docker dev start`
-
-#### Usage
-
-`docker dev start DEV_ENV_NAME`
-
-### `docker dev stop`
-
-#### Usage
-
-`docker dev stop DEV_ENV_NAME`
-
-### `docker dev version`
-
-#### Usage
-
-`docker dev version [OPTIONS]`
-
-#### Options
-
-| Name, shorthand | Description |
-|:---------------------|:----------------------------------------------|
-| `--format`,`-f` | Format the output. |
-| `--short`,`-s` | Shows only Docker Dev's version number. |
diff --git a/content/manuals/desktop/features/dev-environments/set-up.md b/content/manuals/desktop/features/dev-environments/set-up.md
deleted file mode 100644
index 8239abb9343d..000000000000
--- a/content/manuals/desktop/features/dev-environments/set-up.md
+++ /dev/null
@@ -1,92 +0,0 @@
----
-description: Set up a dev Environments
-keywords: Dev Environments, share, set up, Compose, Docker Desktop
-title: Set up a dev environment
-weight: 20
-aliases:
-- /desktop/dev-environments/set-up/
----
-
-{{% include "dev-envs-changing.md" %}}
-
->**Changes to Dev Environments with Docker Desktop 4.13**
->
->Docker has simplified how you configure your dev environment project. All you need to get started is a `compose-dev.yaml` file. If you have an existing project with a `.docker/` folder this is automatically migrated the next time you launch.
->
-> If you are using `.docker/docker-compose.yaml`, we move it to `../compose-dev.yaml`.
->If you are using `.docker/config.json`, we create a `../compose-dev.yaml` file with a single service named "app”. It is configured to use the image or Dockerfile referenced in the JSON as a starting point.
-
-To set up a dev environment, there are additional configuration steps to tell Docker Desktop how to build, start, and use the right image for your services.
-
-Dev Environments use a `compose-dev.yaml` file located at the root of your project. This file allows you to define the image required for a dedicated service, the ports you'd like to expose, along with additional configuration options.
-
-The following is an example `compose-dev.yaml` file.
-
-```yaml
-version: "3.7"
-services:
- backend:
- build:
- context: backend
- target: development
- secrets:
- - db-password
- depends_on:
- - db
- db:
- image: mariadb
- restart: always
- healthcheck:
- test: [ "CMD", "mysqladmin", "ping", "-h", "127.0.0.1", "--silent" ]
- interval: 3s
- retries: 5
- start_period: 30s
- secrets:
- - db-password
- volumes:
- - db-data:/var/lib/mysql
- environment:
- - MYSQL_DATABASE=example
- - MYSQL_ROOT_PASSWORD_FILE=/run/secrets/db-password
- expose:
- - 3306
- proxy:
- build: proxy
- ports:
- - 8080:80
- depends_on:
- - backend
-volumes:
- db-data:
-secrets:
- db-password:
- file: db/password.txt
-```
-
-In the yaml file, the build context `backend` specifies that that the container should be built using the `development` stage (`target` attribute) of the Dockerfile located in the `backend` directory (`context` attribute)
-
-The `development` stage of the Dockerfile is defined as follows:
-
-```dockerfile
-# syntax=docker/dockerfile:1
-FROM golang:1.16-alpine AS build
-WORKDIR /go/src/github.com/org/repo
-COPY . .
-RUN go build -o server .
-FROM build AS development
-RUN apk update \
- && apk add git
-CMD ["go", "run", "main.go"]
-FROM alpine:3.12
-EXPOSE 8000
-COPY --from=build /go/src/github.com/org/repo/server /server
-CMD ["/server"]
-```
-
-The `development` target uses a `golang:1.16-alpine` image with all dependencies you need for development. You can start your project directly from VS Code and interact with the others applications or services such as the database or the frontend.
-
-In the example, the Docker Compose files are the same. However, they could be different and the services defined in the main Compose file may use other targets to build or directly reference other images.
-
-## What's next?
-
-Learn how to [distribute your dev environment](share.md)
diff --git a/content/manuals/desktop/features/dev-environments/share.md b/content/manuals/desktop/features/dev-environments/share.md
deleted file mode 100644
index 41bd8c482d47..000000000000
--- a/content/manuals/desktop/features/dev-environments/share.md
+++ /dev/null
@@ -1,30 +0,0 @@
----
-description: Dev Environments
-keywords: Dev Environments, share, Docker Desktop
-title: Distribute your dev environment
-weight: 30
-aliases:
-- /desktop/dev-environments/share/
----
-
-{{% include "dev-envs-changing.md" %}}
-
-The `compose-dev.yaml` config file makes distributing your dev environment easy so everyone can access the same code and any dependencies.
-
-### Distribute your dev environment
-
-When you are ready to share your environment, simply copy the link to the Github repo where your project is stored, and share the link with your team members.
-
-You can also create a link that automatically starts your dev environment when opened. This can then be placed on a GitHub README or pasted into a Slack channel, for example.
-
-To create the link simply join the following link with the link to your dev environment's GitHub repository:
-
-`https://open.docker.com/dashboard/dev-envs?url=`
-
-The following example opens a [Compose sample](https://github.com/docker/awesome-compose/tree/master/nginx-golang-mysql), a Go server with an Nginx proxy and a MariaDB/MySQL database, in Docker Desktop.
-
-[https://open.docker.com/dashboard/dev-envs?url=https://github.com/docker/awesome-compose/tree/master/nginx-golang-mysql](https://open.docker.com/dashboard/dev-envs?url=https://github.com/docker/awesome-compose/tree/master/nginx-golang-mysql)
-
-### Open a dev environment that has been distributed to you
-
-To open a dev environment that has been shared with you, select the **Create** button in the top right-hand corner, select source **Existing Git repo**, and then paste the URL.
diff --git a/content/manuals/desktop/features/networking.md b/content/manuals/desktop/features/networking.md
index 58d9a73c9b3e..df4946f3c356 100644
--- a/content/manuals/desktop/features/networking.md
+++ b/content/manuals/desktop/features/networking.md
@@ -68,6 +68,133 @@ To enable and set up SOCKS proxy support:
3. Switch on the **Manual proxy configuration** toggle.
4. In the **Secure Web Server HTTPS** box, paste your `socks5://host:port` URL.
+## Networking mode and DNS behaviour for Mac and Windows
+
+With Docker Desktop version 4.42 and later, you can customize how Docker handles container networking and DNS resolution to better support a range of environments — from IPv4-only to dual-stack and IPv6-only systems. These settings help prevent timeouts and connectivity issues caused by incompatible or misconfigured host networks.
+
+> [!NOTE]
+>
+> These settings can be overridden on a per-network basis using CLI flags or Compose file options.
+
+### Default networking mode
+
+Choose the default IP protocol used when Docker creates new networks. This allows you to align Docker with your host’s network capabilities or organizational requirements, such as enforcing IPv6-only access.
+
+The options available are:
+
+- **Dual IPv4/IPv6** (Default): Supports both IPv4 and IPv6. Most flexible and ideal for environments with dual-stack networking.
+- **IPv4 only**: Only IPv4 addresses are used. Use this if your host or network does not support IPv6.
+- **IPv6 only**: Only IPv6 addresses are used. Best for environments transitioning to or enforcing IPv6-only connectivity.
+
+> [!NOTE]
+>
+> This setting can be overridden on a per-network basis using CLI flags or Compose file options.
+
+### DNS resolution behavior
+
+Control how Docker filters DNS records returned to containers, improving reliability in environments where only IPv4 or IPv6 is supported. This setting is especially useful for preventing apps from trying to connect using IP families that aren't actually available, which can cause avoidable delays or failures.
+
+Depending on your selected network mode, the options available are:
+
+- **Auto (recommended)**: Docker detects your host's network stack and automatically filters out unsupported DNS record types (A for IPv4, AAAA for IPv6).
+- **Filter IPv4 (A records)**: Prevents containers from resolving IPv4 addresses. Only available in dual-stack mode.
+- **Filter IPv6 (AAAA records)**: Prevents containers from resolving IPv6 addresses. Only available in dual-stack mode.
+- **No filtering**: Docker returns all DNS records (A and AAAA), regardless of host support.
+
+> [!IMPORTANT]
+>
+> Switching the default networking mode resets the DNS filter to Auto.
+
+### Using Settings Management
+
+If you're an administrator, you can use [Settings Management](/manuals/security/for-admins/hardened-desktop/settings-management/configure-json-file.md#networking) to enforce this Docker Desktop setting across your developer's machines. Choose from the following code snippets and at it to your `admin-settings.json` file.
+
+{{< tabs >}}
+{{< tab name="Networking mode" >}}
+
+Dual IPv4/IPv6:
+
+```json
+{
+ "defaultNetworkingMode": {
+ "locked": true
+ "value": "dual-stack"
+ }
+}
+```
+
+IPv4 only:
+
+```json
+{
+ "defaultNetworkingMode": {
+ "locked": true
+ "value": "ipv4only"
+ }
+}
+```
+
+IPv6 only:
+
+```json
+{
+ "defaultNetworkingMode": {
+ "locked": true
+ "value": "ipv6only"
+ }
+}
+```
+
+{{< /tab >}}
+{{< tab name="DNS resolution" >}}
+
+Auto filter:
+
+```json
+{
+ "dnsInhibition": {
+ "locked": true
+ "value": "auto"
+ }
+}
+```
+
+Filter IPv4:
+
+```json
+{
+ "dnsInhibition": {
+ "locked": true
+ "value": "ipv4"
+ }
+}
+```
+
+Filter IPv6:
+
+```json
+{
+ "dnsInhibition": {
+ "locked": true
+ "value": "ipv6"
+ }
+}
+```
+
+No filter:
+
+```json
+{
+ "dnsInhibition": {
+ "locked": true
+ "value": "none"
+ }
+}
+```
+
+{{< /tab >}}
+{{< /tabs >}}
+
## Networking features for Mac and Linux
### SSH agent forwarding
diff --git a/content/manuals/desktop/previous-versions/3.x-mac.md b/content/manuals/desktop/previous-versions/3.x-mac.md
index 3444a12d02f3..fe1ca74e4a2d 100644
--- a/content/manuals/desktop/previous-versions/3.x-mac.md
+++ b/content/manuals/desktop/previous-versions/3.x-mac.md
@@ -49,7 +49,7 @@ This page contains release notes for Docker Desktop for Mac 3.x.
### New
-**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts. For more information and for instructions on how to use Dev Environments, see [Development Environments Preview](/manuals/desktop/features/dev-environments/_index.md).
+**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts.
### Upgrades
@@ -60,8 +60,8 @@ This page contains release notes for Docker Desktop for Mac 3.x.
- Fixed network's IPAM configuration. Service can define a fixed IP. Fixes for [docker/compose-cli#1678](https://github.com/docker/compose-cli/issues/1678) and [docker/compose-cli#1816](https://github.com/docker/compose-cli/issues/1816)
- Dev Environments
- - Support VS Code Insiders. See [dev-environments#3](https://github.com/docker/dev-environments/issues/3)
- - Allow users to specify a branch when cloning a project. See [dev-environments#11](https://github.com/docker/dev-environments/issues/11)
+ - Support VS Code Insiders.
+ - Allow users to specify a branch when cloning a project.
### Bug fixes and minor changes
@@ -77,7 +77,7 @@ This page contains release notes for Docker Desktop for Mac 3.x.
### New
-**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts. For more information and for instructions on how to use Dev Environments, see [Development Environments Preview](/manuals/desktop/features/dev-environments/_index.md).
+**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts.
**Compose V2 beta**: Docker Desktop now includes the beta version of Compose V2, which supports the `docker compose` command as part of the Docker CLI. While `docker-compose` is still supported and maintained, Compose V2 implementation relies directly on the compose-go bindings which are maintained as part of the specification. The compose command in the Docker CLI supports most of the `docker-compose` commands and flags. It is expected to be a drop-in replacement for `docker-compose`. There are a few remaining flags that have yet to be implemented, see the [docker-compose compatibility list](/manuals/compose/releases/migrate.md) for more information about the flags that are supported in the new compose command. If you run into any problems with Compose V2, you can easily switch back to Compose v1 by either by making changes in Docker Desktop **Experimental** Settings, or by running the command `docker-compose disable-v2`. Let us know your feedback on the new ‘compose’ command by creating an issue in the [Compose-CLI](https://github.com/docker/compose-cli/issues) GitHub repository.
@@ -90,7 +90,7 @@ This page contains release notes for Docker Desktop for Mac 3.x.
### New
-**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts. For more information and for instructions on how to use Dev Environments, see [Development Environments Preview](/manuals/desktop/features/dev-environments/_index.md).
+**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts.
**Compose V2 beta**: Docker Desktop now includes the beta version of Compose V2, which supports the `docker compose` command as part of the Docker CLI. While `docker-compose` is still supported and maintained, Compose V2 implementation relies directly on the compose-go bindings which are maintained as part of the specification. The compose command in the Docker CLI supports most of the `docker-compose` commands and flags. It is expected to be a drop-in replacement for `docker-compose`. There are a few remaining flags that have yet to be implemented, see the [docker-compose compatibility list](/manuals/compose/releases/migrate.md) for more information about the flags that are supported in the new compose command. If you run into any problems with Compose V2, you can easily switch back to Compose v1 by either by making changes in Docker Desktop **Experimental** Settings, or by running the command `docker-compose disable-v2`. Let us know your feedback on the new ‘compose’ command by creating an issue in the [Compose-CLI](https://github.com/docker/compose-cli/issues) GitHub repository.
diff --git a/content/manuals/desktop/previous-versions/3.x-windows.md b/content/manuals/desktop/previous-versions/3.x-windows.md
index b93c1c7435fa..8cc3a627f86b 100644
--- a/content/manuals/desktop/previous-versions/3.x-windows.md
+++ b/content/manuals/desktop/previous-versions/3.x-windows.md
@@ -56,7 +56,7 @@ This page contains release notes for Docker Desktop for Windows 3.x.
### New
-**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts. For more information and for instructions on how to use Dev Environments, see [Development Environments Preview](/manuals/desktop/features/dev-environments/_index.md).
+**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts.
### Upgrades
@@ -67,7 +67,7 @@ This page contains release notes for Docker Desktop for Windows 3.x.
- Fixed network's IPAM configuration. Service can define a fixed IP. Fixes for [docker/compose-cli#1678](https://github.com/docker/compose-cli/issues/1678) and [docker/compose-cli#1816](https://github.com/docker/compose-cli/issues/1816)
- Dev Environments
- - Support VS Code Insiders. See [dev-environments#3](https://github.com/docker/dev-environments/issues/3)
+ - Support VS Code Insiders.
- Allow users to specify a branch when cloning a project. See [dev-environments#11](https://github.com/docker/dev-environments/issues/11)
### Bug fixes and minor changes
@@ -84,7 +84,7 @@ This page contains release notes for Docker Desktop for Windows 3.x.
### New
-**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts. For more information and for instructions on how to use Dev Environments, see [Development Environments Preview](/manuals/desktop/features/dev-environments/_index.md).
+**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts.
**Compose V2 beta**: Docker Desktop now includes the beta version of Compose V2, which supports the `docker compose` command as part of the Docker CLI. While `docker-compose` is still supported and maintained, Compose V2 implementation relies directly on the compose-go bindings which are maintained as part of the specification. The compose command in the Docker CLI supports most of the `docker-compose` commands and flags. It is expected to be a drop-in replacement for `docker-compose`. There are a few remaining flags that have yet to be implemented, see the [docker-compose compatibility list](/manuals/compose/releases/migrate.md) for more information about the flags that are supported in the new compose command. If you run into any problems with Compose V2, you can easily switch back to Compose v1 by either by making changes in Docker Desktop **Experimental** Settings, or by running the command `docker-compose disable-v2`. Let us know your feedback on the new ‘compose’ command by creating an issue in the [Compose-CLI](https://github.com/docker/compose-cli/issues) GitHub repository.
@@ -98,7 +98,7 @@ This page contains release notes for Docker Desktop for Windows 3.x.
### New
-**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts. For more information and for instructions on how to use Dev Environments, see [Development Environments Preview](/manuals/desktop/features/dev-environments/_index.md).
+**Dev Environments Preview**: Dev Environments enable you to seamlessly collaborate with your team members without moving between Git branches to get your code onto your team members' machines. When using Dev Environments, you can share your in-progress work with your team members in just one click, and without having to deal with any merge conflicts.
**Compose V2 beta**: Docker Desktop now includes the beta version of Compose V2, which supports the `docker compose` command as part of the Docker CLI. While `docker-compose` is still supported and maintained, Compose V2 implementation relies directly on the compose-go bindings which are maintained as part of the specification. The compose command in the Docker CLI supports most of the `docker-compose` commands and flags. It is expected to be a drop-in replacement for `docker-compose`. There are a few remaining flags that have yet to be implemented, see the [docker-compose compatibility list](/manuals/compose/releases/migrate.md) for more information about the flags that are supported in the new compose command. If you run into any problems with Compose V2, you can easily switch back to Compose v1 by either by making changes in Docker Desktop **Experimental** Settings, or by running the command `docker-compose disable-v2`. Let us know your feedback on the new ‘compose’ command by creating an issue in the [Compose-CLI](https://github.com/docker/compose-cli/issues) GitHub repository.
diff --git a/content/manuals/desktop/release-notes.md b/content/manuals/desktop/release-notes.md
index 48295917df0b..00db449cb521 100644
--- a/content/manuals/desktop/release-notes.md
+++ b/content/manuals/desktop/release-notes.md
@@ -29,6 +29,74 @@ For more frequently asked questions, see the [FAQs](/manuals/desktop/troubleshoo
>
> If you're experiencing malware detection issues on Mac, follow the steps documented in [docker/for-mac#7527](https://github.com/docker/for-mac/issues/7527).
+## 4.42.0
+
+{{< release-date date="2025-06-04" >}}
+
+{{< desktop-install-v2 all=true beta_win_arm=true version="4.42.0" build_path="/195023/" >}}
+
+### New
+
+- Expanded network compatibility with IPv6 support.
+- The Docker MCP Toolkit is now natively integrated into Docker Desktop.
+- Docker Model Runner is now available for Windows systems running on Qualcomm/ARM GPUs.
+- Added a **Logs** tab to the Models view so you can see the inference engine output in real time.
+- Gordon now integrates the MCP Toolkit, providing access to 100+ MCP servers.
+
+### Upgrades
+
+- [Docker Buildx v0.24.0](https://github.com/docker/buildx/releases/tag/v0.24.0)
+- [Docker Engine v28.2.2](https://docs.docker.com/engine/release-notes/28/#2822)
+- [Compose Bridge v0.0.20](https://github.com/docker/compose-bridge-binaries/releases/tag/v0.0.20)
+- [Docker Compose v2.36.2](https://github.com/docker/compose/releases/tag/v2.36.2)
+- [NVIDIA Container Toolkit v1.17.7](https://github.com/NVIDIA/nvidia-container-toolkit/releases/tag/v1.17.7)
+- [Docker Scout CLI v1.18.0](https://github.com/docker/scout-cli/releases/tag/v1.18.0)
+
+### Bug fixes and enhancements
+
+#### For all platforms
+
+- Docker Desktop now accepts certificates with a negative serial number.
+- Re-enable `seccomp` for containers by default. Use `docker run --security-opt seccomp=unconfined` to disable seccomp for a container.
+- Fixed a bug that caused Docker Desktop to hang when it ran out of memory.
+- Block `io_uring` syscalls in containers.
+- Added support for pulling models from Docker Hub directly, simplifying the process of accessing and using models.
+- Docker Desktop now sets the disk usage limit to the size of the physical disk on fresh install and reset to defaults on Mac and Linux.
+- The maximum disk size in the settings UI now aligns with the full capacity of the host file system.
+- The **Models** view now has a **Docker Hub** tab that lists models under the `ai` namespace.
+- Improved the sign-in enforcement message when more than 10 organizations are enforced.
+- Changed the way ports are mapped by Docker Desktop to fully support IPv6 ports.
+- Fixed a bug in the Dashboard container logs screen causing the scrollbar to disappear as the mouse approaches.
+- [Enforced sign-in](../security/for-admins/enforce-sign-in) fixed for Teams subscription users.
+- `llama.cpp` server now supports streaming and tool calling in Model Runner.
+- Sign-in Enforcement capability is now available to all subscriptions.
+
+#### For Mac
+
+- Fixed a bug where the disk would always have a minimum usage limit of 64GB when using Docker VMM.
+- Disabled the memory protection keys mechanism in the Docker Desktop Linux VM. This caused VS Code Dev Containers to not work properly. See [docker/for-mac#7667](https://github.com/docker/for-mac/issues/7667).
+- Fixed persistent volume claims under Kubernetes. Fixes [docker/for-mac#7625](https://github.com/docker/for-mac/issues/7625).
+- Fixed a bug where the VM failed to start using Apple virtualization.framework.
+- Minimum version to install or update Docker Desktop on is now macOS Ventura 13.3.
+
+#### For Windows
+
+- Fixed a bug in Enhanced Container Isolation on Windows WSL, where files with hardlinks inside containers had `nobody:nogroup` ownership.
+- Fixed a bug that caused Docker Desktop to crash. Related to [docker/for-win#14782](https://github.com/docker/for-win/issues/14782).
+- Fixed a bug that caused `The network name cannot be found` error when starting with WSL 2. Fixes [docker/for-win#14714](https://github.com/docker/for-win/issues/14714).
+- Fixed an issue where Docker Desktop would not remove entries in the hosts file when uninstalling.
+- Fixed an issue when reading auto-start registry key for some system languages. Fixes [docker/for-win#14731](https://github.com/docker/for-win/issues/14731).
+- Fixed a bug where Docker Desktop was adding unrecognised /etc/wsl.conf `crossDistro` option which was causing WSL 2 to log an error. See [microsoft/WSL#4577](https://github.com/microsoft/WSL/issues/4577)
+- Fixed a bug where Docker Desktop failed to start on WSL 2.5.7 if another WSL distro is still using Linux cgroups v1. Fixes [docker/for-win#14801](https://github.com/docker/for-win/issues/14801)
+- Windows Subsystem for Linux (WSL) version 2.1.5 is now the minimum version required for proper functioning of Docker Desktop application
+
+### Known issues
+
+#### For Windows
+
+- Running containers with Wasm will hang sporadically. See [docker/for-mac#7666](https://github.com/docker/for-mac/issues/7666).
+- On some machines Resource Saver will cause other WSL 2 distros to freeze. The workaround is to disable Resource Saver. See [docker/for-mac#14656](https://github.com/docker/for-win/issues/14656).
+
## 4.41.2
{{< release-date date="2025-05-06" >}}
diff --git a/content/manuals/desktop/settings-and-maintenance/settings.md b/content/manuals/desktop/settings-and-maintenance/settings.md
index 662d07d83df9..ab4cb2d88467 100644
--- a/content/manuals/desktop/settings-and-maintenance/settings.md
+++ b/content/manuals/desktop/settings-and-maintenance/settings.md
@@ -307,6 +307,8 @@ To enable Kerberos or NTLM proxy authentication you must pass the `--proxy-enabl
Docker Desktop uses a private IPv4 network for internal services such as a DNS server and an HTTP proxy. In case Docker Desktop's choice of subnet clashes with IPs in your environment, you can specify a custom subnet using the **Network** setting.
+On Windows and Mac, you can also set the default networking mode and DNS resolution behavior. For more information, see [Networking](/manuals/desktop/features/networking.md#networking-mode-and-dns-behaviour-for-mac-and-windows).
+
On Mac, you can also select the **Use kernel networking for UDP** setting. This lets you use a more efficient kernel networking path for UDP. This may not be compatible with your VPN software.
### WSL Integration
diff --git a/content/manuals/desktop/setup/images/cloud-mode.png b/content/manuals/desktop/setup/images/cloud-mode.png
new file mode 100644
index 000000000000..b4d3deb039b8
Binary files /dev/null and b/content/manuals/desktop/setup/images/cloud-mode.png differ
diff --git a/content/manuals/desktop/setup/vm-vdi.md b/content/manuals/desktop/setup/vm-vdi.md
index b51978247761..d9d3a2b6c932 100644
--- a/content/manuals/desktop/setup/vm-vdi.md
+++ b/content/manuals/desktop/setup/vm-vdi.md
@@ -9,11 +9,91 @@ aliases:
weight: 30
---
-Docker recommends running Docker Desktop natively on Mac, Linux, or Windows. However, Docker Desktop for Windows can run inside a virtual desktop provided the virtual desktop is properly configured.
+Docker recommends running Docker Desktop natively on Mac, Linux, or Windows. However, Docker Desktop for Windows can run inside a virtual desktop provided the virtual desktop is properly configured.
-To run Docker Desktop in a virtual desktop environment, it is essential nested virtualization is enabled on the virtual machine that provides the virtual desktop. This is because, under the hood, Docker Desktop is using a Linux VM in which it runs Docker Engine and the containers.
+To run Docker Desktop in a virtual desktop environment, you have two options,
+depending on whether nested virtualization is supported:
-## Virtual desktop support
+- If your environment supports nested virtualization, you can run Docker Desktop
+ with its default local Linux VM.
+- If nested virtualization is not supported, Docker recommends using Docker
+ Cloud. To join the beta, contact Docker at `docker-cloud@docker.com`.
+
+## Use Docker Cloud
+
+{{< summary-bar feature_name="Docker Cloud" >}}
+
+Docker Cloud lets you offload container workloads to a high-performance,
+fully hosted cloud environment, enabling a seamless hybrid experience. It
+includes an insights dashboard that offers performance metrics and environment
+management to help optimize your development workflow.
+
+This mode is useful in virtual desktop environments where nested virtualization
+isn't supported. In these environments, Docker Desktop defaults to using
+cloud mode to ensure you can still build and run containers without relying on
+local virtualization.
+
+Docker Cloud decouples the Docker Desktop client from the Docker Engine,
+allowing the Docker CLI and Docker Desktop Dashboard to interact with
+cloud-based resources as if they were local. When you run a container, Docker
+provisions a secure, isolated, and ephemeral cloud environment connected to
+Docker Desktop via an SSH tunnel. Despite running remotely, features like bind
+mounts and port forwarding continue to work seamlessly, providing a local-like
+experience. To use Docker Cloud:
+
+1. Contact Docker at `docker-cloud@docker.com` to activate the feature for your
+ account.
+2. [Install Docker Desktop](/manuals/desktop/setup/install/windows-install.md#install-docker-desktop-on-windows)
+ version 4.42 or later on your Windows virtual desktop.
+3. [Start Docker Desktop](/manuals/desktop/setup/install/windows-install.md#start-docker-desktop).
+4. Sign in to Docker Desktop.
+
+After you sign in, Docker Cloud is enabled by default and cannot be
+disabled. When enabled, Docker Desktop's Dashboard header appears purple and the
+cloud-mode toggle is a cloud icon ({{< inline-image
+src="./images/cloud-mode.png" alt="Cloud mode icon" >}}).
+
+In this mode, Docker Desktop mirrors your cloud environment, providing
+a seamless view of your containers and resources running on Docker Cloud. You
+can verify that Docker Cloud is working by running a simple container. In a
+terminal on your virtual desktop, run the following command:
+
+```console
+$ docker run hello-world
+```
+
+In the terminal, you will see `Hello from Docker!` if everything is working
+correctly.
+
+### View insights and manage Docker Cloud
+
+For insights and management, use the [Docker Cloud
+Dashboard](https://app.docker.com/cloud). It provides visibility into your
+builds, runs, and cloud resource usage. Key features include:
+
+- Overview: Monitor cloud usage, build cache, and top repositories built.
+- Build history: Review past builds with filtering and sorting options.
+- Run history: Track container runs and sort by various options.
+- Integrations: Learn how to set up cloud builders and runners for your CI
+ pipeline.
+- Settings: Manage cloud builders, usage, and account settings.
+
+Access the Docker Cloud Dashboard at https://app.docker.com/cloud.
+
+### Limitations
+
+The following limitations apply when using Docker Cloud:
+
+- Persistence: Containers are launched in a cloud engine that remains available
+ as long as you interact with and consume the containers' output. After closing
+ Docker Desktop, or about 30 minutes of inactivity, the engine is shut down and
+ becomes inaccessible, along with any data stored in it, including images,
+ containers, and volumes. A new engine is provisioned for any new workloads.
+- Usage and billing: During beta, no charges are incurred for using Docker Cloud
+ resources. Docker enforces a usage cap and reserves the right to disable
+ Docker Cloud access at any time.
+
+## Virtual desktop support when using nested virtualization
> [!NOTE]
>
@@ -33,7 +113,8 @@ Docker does not support running multiple instances of Docker Desktop on the same
## Turn on nested virtualization
-You must turn on nested virtualization before you install Docker Desktop on a virtual machine.
+You must turn on nested virtualization before you install Docker Desktop on a
+virtual machine that will not use Docker Cloud.
### Turn on nested virtualization on VMware ESXi
@@ -55,7 +136,7 @@ If using Windows container mode, confirm that the Nutanix environment supports H
### Supported configurations
-Docker Desktop follows the VDI support definitions outlined [previously](#virtual-desktop-support):
+Docker Desktop follows the VDI support definitions outlined [previously](#virtual-desktop-support-when-using-nested-virtualization):
- Persistent VDI environments (Supported): You receive the same virtual desktop instance across sessions, preserving installed software and configurations.
diff --git a/content/manuals/desktop/troubleshoot-and-support/faqs/general.md b/content/manuals/desktop/troubleshoot-and-support/faqs/general.md
index d21afd8e306f..4d0d15d267e7 100644
--- a/content/manuals/desktop/troubleshoot-and-support/faqs/general.md
+++ b/content/manuals/desktop/troubleshoot-and-support/faqs/general.md
@@ -25,7 +25,6 @@ This includes:
- [Image Access Management](/manuals/security/for-developers/access-tokens.md)
- [Static vulnerability scanning](/manuals/docker-hub/repos/manage/vulnerability-scanning.md)
- Viewing remote images in the Docker Dashboard
-- Setting up [Dev Environments](/manuals/desktop/features/dev-environments/_index.md)
- Docker Build when using [BuildKit](/manuals/build/buildkit/_index.md#getting-started).
You can work around this by disabling BuildKit. Run `DOCKER_BUILDKIT=0 docker build .` to disable BuildKit.
- [Kubernetes](/manuals/desktop/features/kubernetes.md) (Images are download when you enable Kubernetes for the first time)
diff --git a/content/manuals/desktop/troubleshoot-and-support/feedback.md b/content/manuals/desktop/troubleshoot-and-support/feedback.md
index edba3f2d070b..ba7759f24a96 100644
--- a/content/manuals/desktop/troubleshoot-and-support/feedback.md
+++ b/content/manuals/desktop/troubleshoot-and-support/feedback.md
@@ -31,7 +31,6 @@ GitHub](https://github.com/docker/for-mac/issues)
- [Docker Desktop for Windows issues on GitHub](https://github.com/docker/for-win/issues)
- [Docker Desktop for Linux issues on
GitHub](https://github.com/docker/desktop-linux/issues)
-- [Dev Environments issues on GitHub](https://github.com/docker/dev-environments/issues)
- [Docker Extensions issues on GitHub](https://github.com/docker/extensions-sdk/issues)
### Feedback via Community Slack channels
@@ -41,5 +40,4 @@ You can also provide feedback through the following [Docker Community Slack](htt
- #docker-desktop-mac
- #docker-desktop-windows
- #docker-desktop-linux
-- #docker-dev-environments
- #extensions
diff --git a/content/manuals/retired.md b/content/manuals/retired.md
index 1a2a083fb1e6..c99eec578f82 100644
--- a/content/manuals/retired.md
+++ b/content/manuals/retired.md
@@ -62,6 +62,11 @@ aliases:
- /toolbox/overview/
- /toolbox/toolbox_install_mac/
- /toolbox/toolbox_install_windows/
+ - /desktop/features/dev-environments/
+ - /desktop/features/dev-environments/create-dev-env/
+ - /desktop/features/dev-environments/set-up/
+ - /desktop/features/dev-environments/share/
+ - /desktop/features/dev-environments/dev-cli/
---
This document provides an overview of Docker features, products, and
@@ -135,8 +140,7 @@ guidance on modern equivalents.
### Dev Environments
Dev Environments was a feature introduced in Docker Desktop that allowed
-developers to spin up development environments quickly. This feature is no
-longer under active development. Similar workflows can be achieved through
+developers to spin up development environments quickly. It was deprecated and removed from Docker Desktop version 4.42 and later. Similar workflows can be achieved through
Docker Compose or by creating custom configurations tailored to specific
project requirements.
diff --git a/content/manuals/security/for-admins/enforce-sign-in/_index.md b/content/manuals/security/for-admins/enforce-sign-in/_index.md
index 5ee35def4989..9638ae5132ca 100644
--- a/content/manuals/security/for-admins/enforce-sign-in/_index.md
+++ b/content/manuals/security/for-admins/enforce-sign-in/_index.md
@@ -16,10 +16,13 @@ weight: 30
By default, members of your organization can use Docker Desktop without signing
in. When users don’t sign in as a member of your organization, they don’t
receive the [benefits of your organization’s
-subscription](../../../subscription/details.md) and they can circumvent [Docker’s
-security features](/manuals/security/for-admins/hardened-desktop/_index.md) for your organization.
+subscription](../../../subscription/details.md) and they can circumvent
+[Docker’s
+security features](/manuals/security/for-admins/hardened-desktop/_index.md) for
+your organization.
-There are multiple methods for enforcing sign-in, depending on your companies' set up and preferences:
+There are multiple methods for enforcing sign-in, depending on your companies'
+set up and preferences:
- [Registry key method (Windows only)](methods.md#registry-key-method-windows-only){{< badge color=green text="New" >}}
- [Configuration profiles method (Mac only)](methods.md#configuration-profiles-method-mac-only){{< badge color=green text="New" >}}
- [`.plist` method (Mac only)](methods.md#plist-method-mac-only){{< badge color=green text="New" >}}
@@ -27,7 +30,8 @@ There are multiple methods for enforcing sign-in, depending on your companies' s
## How is sign-in enforced?
-When Docker Desktop starts and it detects a registry key, `.plist` file, or `registry.json` file, the following occurs:
+When Docker Desktop starts and it detects a registry key, `.plist` file, or
+`registry.json` file, the following occurs:
- A **Sign in required!** prompt appears requiring the user to sign
in as a member of your organization to use Docker Desktop. ![Enforce Sign-in
@@ -42,11 +46,13 @@ When Docker Desktop starts and it detects a registry key, `.plist` file, or `reg
> [!NOTE]
>
-> Enforcing sign-in for Docker Desktop does not impact accessing the Docker CLI. CLI access is only impacted for organizations that enforce single sign-on.
+> Enforcing sign-in for Docker Desktop does not impact accessing the Docker CLI.
+CLI access is only impacted for organizations that enforce single sign-on.
## Enforcing sign-in versus enforcing single sign-on (SSO)
-[Enforcing SSO](/manuals/security/for-admins/single-sign-on/connect.md#optional-enforce-sso) and enforcing sign-in are different features. The following table provides a
+[Enforcing SSO](/manuals/security/for-admins/single-sign-on/connect.md#optional-enforce-sso)
+and enforcing sign-in are different features. The following table provides a
description and benefits when using each feature.
| Enforcement | Description | Benefits |
diff --git a/content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/faq.md b/content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/faq.md
index f3d58009e9eb..b3d47d362298 100644
--- a/content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/faq.md
+++ b/content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/faq.md
@@ -73,9 +73,6 @@ For containers implicitly created by `docker build` as well as Docker
Desktop's integrated Kubernetes, protection varies depending on the Docker
Desktop version (see the following two FAQs).
-ECI does not yet protect Docker Desktop Extension containers and
-[Dev Environments containers](/manuals/desktop/features/dev-environments/_index.md).
-
### Does ECI protect containers implicitly used by `docker build`?
Prior to Docker Desktop 4.19, ECI did not protect containers used implicitly
diff --git a/content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/limitations.md b/content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/limitations.md
index b0dc419e4879..208bacbdf631 100644
--- a/content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/limitations.md
+++ b/content/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/limitations.md
@@ -83,11 +83,6 @@ arrangements are needed, just enable ECI and run the KinD tool as usual.
Extension containers are also not yet protected by ECI. Ensure you extension
containers come from trusted entities to avoid issues.
-### Docker Desktop Dev Environments are not yet protected
-
-Containers launched by the Docker Desktop Dev Environments feature are not yet
-protected.
-
### Docker Debug containers are not yet protected
[Docker Debug](https://docs.docker.com/reference/cli/docker/debug/) containers
diff --git a/content/manuals/security/for-admins/hardened-desktop/settings-management/configure-json-file.md b/content/manuals/security/for-admins/hardened-desktop/settings-management/configure-json-file.md
index 28758eca5db1..3f379f82308b 100644
--- a/content/manuals/security/for-admins/hardened-desktop/settings-management/configure-json-file.md
+++ b/content/manuals/security/for-admins/hardened-desktop/settings-management/configure-json-file.md
@@ -301,13 +301,23 @@ quit and reopened.
>
> These containers mount the Docker socket, so you must add the images to the ECI images list. If not, ECI will block the mount and Kubernetes won't start.
-### Features in development
+### Networking
|Parameter|OS|Description|Version|
|:-------------------------------|---|:-------------------------------|---|
-| `allowExperimentalFeatures`| | If `value` is set to `false`, experimental features are disabled.| |
-| `allowBetaFeatures`| | If `value` is set to `false`, beta features are disabled.| |
-| `enableDockerAI` | | If `value` is set to `false`, Docker AI (Ask Gordon) features are disabled. | |
+| `defaultNetworkingMode` | Windows and Mac only | Defines the default IP protocol for new Docker networks: `dual-stack` (IPv4 + IPv6, default), `ipv4only`, or `ipv6only`. | Docker Desktop version 4.42 and later. |
+| `dnsInhibition` | Windows and Mac only | Controls DNS record filtering returned to containers. Options: `auto` (recommended), `ipv4`, `ipv6`, `none`| Docker Desktop version 4.42 and later. |
+
+For more information, see [Networking](/manuals/desktop/features/networking.md#networking-mode-and-dns-behaviour-for-mac-and-windows).
+
+### Features in development
+
+| Parameter | OS | Description | Version |
+|:----------------------------|----|:--------------------------------------------------------------------------------------------------------------------------------------------------------------|---------|
+| `allowExperimentalFeatures` | | If `value` is set to `true`, experimental features are enabled. | |
+| `allowBetaFeatures` | | If `value` is set to `true`, beta features are enabled. | |
+| `enableDockerAI` | | If `allowBetaFeatures` is true, setting `enableDockerAI` to `true` enables [Docker AI (Ask Gordon)](/manuals/ai/gordon/_index.md). | |
+| `enableDockerMCPToolkit` | | If `allowBetaFeatures` is true, setting `enableDockerMCPToolkit` to `true` enables the [MCP toolkit feature](/manuals/ai/mcp-catalog-and-toolkit/toolkit.md). | |
### Enhanced Container Isolation
diff --git a/content/manuals/security/for-admins/hardened-desktop/settings-management/settings-reference.md b/content/manuals/security/for-admins/hardened-desktop/settings-management/settings-reference.md
index a9ef45a70457..5a44a0e0fe43 100644
--- a/content/manuals/security/for-admins/hardened-desktop/settings-management/settings-reference.md
+++ b/content/manuals/security/for-admins/hardened-desktop/settings-management/settings-reference.md
@@ -513,6 +513,36 @@ settings.
- **Configure this setting with:**
- **Network** Resources settings in [Docker Desktop GUI](/manuals/desktop/settings-and-maintenance/settings.md)
+### Networking mode
+
+| Default value | Accepted values | Format |
+|---------------|-----------------|----------|
+| `dual-stack` | `ipv4only`, `ipv6only` | String |
+
+- **Description:** Set the networking mode.
+- **OS:** {{< badge color=blue text="Windows and Mac" >}}
+- **Use case:** Choose the default IP protocol used when Docker creates new networks.
+- **Configure this setting with:**
+ - **Network** Resources settings in [Docker Desktop GUI](/manuals/desktop/settings-and-maintenance/settings.md)
+ - Settings Management: `defaultNetworkingMode` setting in the [`admin-settings.json` file](/manuals/security/for-admins/hardened-desktop/settings-management/configure-json-file.md)
+
+For more information, see [Networking](/manuals/desktop/features/networking.md#networking-mode-and-dns-behaviour-for-mac-and-windows).
+
+#### Inhibit DNS resolution for IPv4/IPv6
+
+| Default value | Accepted values | Format |
+|---------------|-----------------|----------|
+| `auto` | `ipv4`, `ipv6`, `none` | String |
+
+- **Description:** Filters unsupported DNS record types.
+- **OS:** {{< badge color=blue text="Windows and Mac" >}}
+- **Use case:** Control how Docker filters DNS records returned to containers, improving reliability in environments where only IPv4 or IPv6 is supported.
+- **Configure this setting with:**
+ - **Network** Resources settings in [Docker Desktop GUI](/manuals/desktop/settings-and-maintenance/settings.md)
+ - Settings Management: `dnsInhibition` setting in the [`admin-settings.json` file](/manuals/security/for-admins/hardened-desktop/settings-management/configure-json-file.md)
+
+For more information, see [Networking](/manuals/desktop/features/networking.md#networking-mode-and-dns-behaviour-for-mac-and-windows).
+
### Enable WSL engine
| Default value | Accepted values | Format |
diff --git a/content/reference/api/extensions-sdk/DockerDesktopClient.md b/content/reference/api/extensions-sdk/DockerDesktopClient.md
index 9ab538f8f2f8..40966eb00fc4 100644
--- a/content/reference/api/extensions-sdk/DockerDesktopClient.md
+++ b/content/reference/api/extensions-sdk/DockerDesktopClient.md
@@ -401,30 +401,6 @@ DockerDesktopClientV0.navigateToVolume
___
-### navigateToDevEnvironments
-
-▸ **navigateToDevEnvironments**(): `void`
-
-Navigate to the Dev Environments window in Docker Desktop.
-
-```typescript
-window.ddClient.navigateToDevEnvironments();
-```
-
-> [!WARNING]
->
-> It will be removed in a future version. Use [viewDevEnvironments](NavigationIntents.md#viewdevenvironments) instead.
-
-#### Returns
-
-`void`
-
-#### Inherited from
-
-DockerDesktopClientV0.navigateToDevEnvironments
-
-___
-
## Other Methods
### execHostCmd
diff --git a/content/reference/api/extensions-sdk/NavigationIntents.md b/content/reference/api/extensions-sdk/NavigationIntents.md
index 6868a8c8d9dc..743b78462110 100644
--- a/content/reference/api/extensions-sdk/NavigationIntents.md
+++ b/content/reference/api/extensions-sdk/NavigationIntents.md
@@ -197,24 +197,6 @@ A promise that fails if the image doesn't exist.
___
-## Other Methods
-
-### viewDevEnvironments
-
-▸ **viewDevEnvironments**(): `Promise`<`void`\>
-
-Navigate to the Dev Environments window in Docker Desktop.
-
-```typescript
-ddClient.desktopUI.navigate.viewDevEnvironments()
-```
-
-#### Returns
-
-`Promise`<`void`\>
-
-___
-
## Volume Methods
### viewVolumes
diff --git a/data/redirects.yml b/data/redirects.yml
index 0e4cac686d1f..aed83e6b2667 100644
--- a/data/redirects.yml
+++ b/data/redirects.yml
@@ -10,8 +10,6 @@
# in its help output, which can be redirected to elsewhere in the documentation.
"/security/for-developers/access-tokens/":
- /go/access-tokens/
-"/desktop/mac/apple-silicon/":
- - /go/apple-silicon/
"/reference/api/engine/#deprecated-api-versions":
- /engine/api/v1.18/
- /engine/api/v1.19/
@@ -31,9 +29,6 @@
- /reference/api/docker_remote_api_v1.21/
- /reference/api/docker_remote_api_v1.22/
- /reference/api/docker_remote_api_v1.23/
-# redirect for old location of dockerd reference
-"/reference/cli/dockerd/":
- - /engine/reference/commandline/dockerd/
# redirect updated location of the "running containers" page
"/engine/containers/run/":
- "/engine/reference/run/"
@@ -83,13 +78,6 @@
- /go/formatting/
"/?utm_source=docker&utm_medium=inproductad&utm_campaign=20-11nurturecli_docs":
- /go/guides/
-"/desktop/get-started/#credentials-management-for-linux-users":
- - /go/linux-credentials/
-"/desktop/use-desktop/pause/":
- - /go/mac-desktop-pause/
- - /go/win-desktop-pause/
-"/desktop/settings-and-maintenance/settings/#file-sharing":
- - /go/mac-file-sharing/
"/engine/security/rootless/":
# Instructions on running docker in rootless mode. This redirect is currently
# used in the installation script at "get.docker.com"
@@ -98,9 +86,7 @@
- /go/storage-driver/
"/docker-hub/vulnerability-scanning/":
- /go/tip-scanning/
-"/desktop/features/wsl/":
- # Link used by Docker Desktop to refer users on how to activate WSL 2
- - /go/wsl2/
+
"/reference/api/hub/latest/":
- /docker-hub/api/latest/
"/reference/api/hub/dvp/":
@@ -268,13 +254,6 @@
"/desktop/use-desktop/container/#debug":
- /go/debug-gui/
-# Docker Desktop - volumes cloud backup
-"/desktop/use-desktop/volumes/#export-a-volume":
- - /go/volume-export/
- - /go/volume-export-aws/
- - /go/volume-export-azure/
- - /go/volume-export-gcs/
-
# Docker Admin Console - Insights
"/admin/organization/insights/":
- /go/insights/
@@ -297,10 +276,66 @@
"/docker-hub/usage/pulls/":
- /go/hub-pull-limits/
-# Desktop DMR
-"/model-runner/":
- - /go/model-runner/
-
+
+# Links in Desktop
+
# Desktop MCP Toolkit
"/ai/mcp-catalog-and-toolkit/toolkit/":
- /go/mcp-toolkit/
+
+# Desktop DMR
+"/model-runner/":
+ - /go/model-runner/
+
+# Docker Desktop - volumes cloud backup
+"/desktop/use-desktop/volumes/#export-a-volume":
+ - /go/volume-export/
+ - /go/volume-export-aws/
+ - /go/volume-export-azure/
+ - /go/volume-export-gcs/
+
+# Link used by Docker Desktop to refer users on how to activate WSL 2
+"/desktop/features/wsl/":
+ - /go/wsl2/
+
+"/desktop/get-started/#credentials-management-for-linux-users":
+ - /go/linux-credentials/
+"/desktop/use-desktop/pause/":
+ - /go/mac-desktop-pause/
+ - /go/win-desktop-pause/
+"/desktop/settings-and-maintenance/settings/#file-sharing":
+ - /go/mac-file-sharing/
+
+"/desktop/use-desktop/container/":
+ - /go/container/
+"/desktop/use-desktop/images/":
+ - /go/images/
+"/desktop/use-desktop/volumes/":
+ - /go/volumes/
+"/extensions/":
+ - /go/extensions/
+"/engine/cli/completion/":
+ - /go/completion/
+"/desktop/features/vmm/":
+ - /go/vmm/
+"/security/for-admins/hardened-desktop/enhanced-container-isolation/":
+ - /go/eci/
+"/desktop/features/synchronized-file-sharing/":
+ - /go/synchronized-file-sharing/
+"/reference/cli/dockerd/":
+ - /go/daemon/
+"/ai/gordon/":
+ - /go/gordon/
+"/desktop/features/wasm/":
+ - /go/wasm/
+"/compose/bridge/":
+ - /go/compose-bridge/
+"/desktop/settings-and-maintenance/settings/":
+ - /go/notifications/
+"/desktop/setup/install/mac-permission-requirements/#installing-symlinks":
+ - /go/symlinks/
+"/desktop/setup/install/mac-permission-requirements/":
+ - /go/permissions/
+"/desktop/setup/install/mac-permission-requirements/#binding-privileged-ports":
+ - /go/port-mapping/
+
\ No newline at end of file
diff --git a/data/summary.yaml b/data/summary.yaml
index b6f0c803748b..5d1410492f5a 100644
--- a/data/summary.yaml
+++ b/data/summary.yaml
@@ -135,6 +135,9 @@ Docker Build Cloud:
subscription: [Pro, Team, Business]
Docker CLI OpenTelemetry:
requires: Docker Engine [26.1.0](/manuals/engine/release-notes/26.1.md#2610) and later
+Docker Cloud:
+ availability: Beta
+ requires: Docker Desktop 4.42 and later
docker compose alpha:
availability: Experimental
Docker Debug:
@@ -175,7 +178,7 @@ Domain management:
subscription: [Business]
for: Administrators
Enforce sign-in:
- subscription: [Business]
+ subscription: [Team, Business]
for: Administrators
Gated distribution:
availability: Early Access
diff --git a/hugo_stats.json b/hugo_stats.json
index ce7c37f18377..eb013ca65696 100644
--- a/hugo_stats.json
+++ b/hugo_stats.json
@@ -8,6 +8,7 @@
"-mr-8",
"-mt-0.5",
"-mt-8",
+ "-top-10",
"-top-16",
"-v",
"-z-10",
@@ -78,7 +79,6 @@
"Mac-with-Apple-silicon",
"Mac-with-Intel-chip",
"Manually-create-assets",
- "Manually-set-it-up",
"NetworkManager",
"Node",
"Non-compliant",
@@ -114,9 +114,7 @@
"Use-OpenAI",
"Using-the-CLI",
"Using-the-GUI",
- "Using-the-MCP-Toolkit-Recommended",
"VS-Code",
- "Via-Docker-Desktop-Recommended",
"Vue",
"WSL-2-backend-Arm-Early-Access",
"WSL-2-backend-x86_64",
@@ -155,9 +153,7 @@
"bg-blue-500",
"bg-gradient-to-br",
"bg-gradient-to-r",
- "bg-gray-00",
"bg-gray-100",
- "bg-gray-200",
"bg-gray-400",
"bg-gray-50",
"bg-gray-700",
@@ -190,6 +186,7 @@
"border-white",
"bottom-0",
"build-push-action",
+ "button",
"card",
"card-content",
"card-description",
@@ -198,32 +195,29 @@
"card-img",
"card-link",
"card-title",
+ "chip",
"chroma",
"cls-1",
"cls-2",
"col-start-2",
"containerd-image-store",
"cursor-pointer",
- "dark:bg-amber-300",
+ "dark:bg-amber-400",
"dark:bg-background-dark",
"dark:bg-background-toc",
"dark:bg-blue",
- "dark:bg-blue-300",
"dark:bg-blue-400",
"dark:bg-blue-500",
"dark:bg-blue-800",
"dark:bg-gray-300",
- "dark:bg-gray-400",
"dark:bg-gray-500",
"dark:bg-gray-800",
"dark:bg-gray-900",
"dark:bg-gray-950",
- "dark:bg-green-300",
"dark:bg-green-700",
"dark:bg-green-dark-400",
"dark:bg-navbar-bg-dark",
- "dark:bg-red-300",
- "dark:bg-violet-300",
+ "dark:bg-red-400",
"dark:bg-violet-400",
"dark:block",
"dark:border-b-blue-600",
@@ -242,10 +236,11 @@
"dark:hover:bg-blue-400",
"dark:hover:bg-blue-500",
"dark:hover:bg-blue-700",
- "dark:hover:bg-gray-500",
+ "dark:hover:bg-gray-600",
"dark:hover:bg-gray-800",
"dark:hover:bg-gray-900",
"dark:hover:text-blue",
+ "dark:outline-gray-800",
"dark:prose-invert",
"dark:ring-3-blue-dark-400",
"dark:ring-3-gray-dark-400",
@@ -259,7 +254,6 @@
"dark:text-gray-300",
"dark:text-gray-400",
"dark:text-gray-500",
- "dark:text-gray-900",
"dark:text-magenta-dark",
"dark:text-white",
"dark:to-blue-400",
@@ -284,6 +278,7 @@
"focus:ring-3-blue-light",
"font-bold",
"font-medium",
+ "font-normal",
"font-semibold",
"footnote-backref",
"footnote-ref",
@@ -295,6 +290,7 @@
"gap-10",
"gap-12",
"gap-2",
+ "gap-2.5",
"gap-20",
"gap-3",
"gap-4",
@@ -331,7 +327,6 @@
"hover:border-white/20",
"hover:dark:bg-blue-500",
"hover:dark:bg-gray-300",
- "hover:dark:bg-gray-700",
"hover:dark:bg-gray-800",
"hover:dark:text-blue-400",
"hover:dark:text-blue-700",
@@ -375,7 +370,6 @@
"lntable",
"lntd",
"m-2",
- "m-4",
"macOS",
"max-h-full",
"max-w-4xl",
@@ -386,8 +380,8 @@
"max-w-none",
"max-w-xl",
"mb-1",
+ "mb-1.5",
"mb-2",
- "mb-3",
"mb-4",
"mb-6",
"mb-8",
@@ -406,6 +400,7 @@
"md:text-sm",
"md:top-16",
"md:w-[300px]",
+ "md:w-[320px]",
"md:z-auto",
"min-h-screen",
"min-w-0",
@@ -416,6 +411,7 @@
"ml-4",
"ml-auto",
"mt-1",
+ "mt-1.5",
"mt-2",
"mt-20",
"mt-4",
@@ -425,7 +421,10 @@
"my-0",
"my-4",
"my-6",
+ "navbar-entry-background-current",
+ "navbar-entry-margin",
"navbar-font",
+ "navbar-group",
"navbar-group-font-title",
"no-underline",
"no-wrap",
@@ -436,7 +435,11 @@
"origin-bottom-right",
"origin-top-right",
"ot-sdk-show-settings",
+ "outline",
+ "outline-1",
+ "outline-gray-200",
"outline-hidden",
+ "outline-offset-[-1px]",
"overflow-clip",
"overflow-hidden",
"overflow-x-auto",
@@ -444,6 +447,7 @@
"overflow-y-auto",
"p-1",
"p-2",
+ "p-3",
"p-4",
"p-6",
"p-8",
@@ -467,11 +471,11 @@
"pt-10",
"pt-2",
"pt-4",
- "pt-5",
"px-1",
"px-2",
"px-4",
"px-6",
+ "py-0.5",
"py-1",
"py-2",
"py-20",
@@ -479,16 +483,16 @@
"py-8",
"relative",
"right-0",
- "right-3",
+ "right-2",
"right-8",
"ring-3-2",
"ring-3-[1.5px]",
"ring-3-blue-light-400",
"ring-3-gray-light-200",
"rotate-45",
+ "rounded",
"rounded-full",
"rounded-sm",
- "rounded-sm-b-lg",
"scale-50",
"scale-75",
"scroll-mt-2",
@@ -526,11 +530,11 @@
"text-blue-light",
"text-divider-light",
"text-gray",
- "text-gray-100",
"text-gray-200",
+ "text-gray-300",
"text-gray-400",
+ "text-gray-500",
"text-gray-600",
- "text-gray-800",
"text-left",
"text-lg",
"text-magenta-light",
@@ -543,8 +547,8 @@
"to-blue-500",
"toc",
"top-0",
+ "top-1",
"top-16",
- "top-3",
"top-6",
"top-full",
"transition",
diff --git a/layouts/_default/_markup/render-codeblock.html b/layouts/_default/_markup/render-codeblock.html
index f79fcd46582c..c0a0addb6dc9 100644
--- a/layouts/_default/_markup/render-codeblock.html
+++ b/layouts/_default/_markup/render-codeblock.html
@@ -1,33 +1,47 @@
-