From ffd3ccd0721f3edcb607b5e5b9f15fa017f375a2 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Thu, 10 Oct 2024 10:31:34 +0200 Subject: [PATCH 01/13] hugo: use render hook for markdown tables Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- assets/css/typography.css | 5 --- hugo_stats.json | 2 ++ layouts/_default/_markup/render-table.html | 39 ++++++++++++++++++++++ 3 files changed, 41 insertions(+), 5 deletions(-) create mode 100644 layouts/_default/_markup/render-table.html diff --git a/assets/css/typography.css b/assets/css/typography.css index a0c6511e5908..008e7af70494 100644 --- a/assets/css/typography.css +++ b/assets/css/typography.css @@ -73,10 +73,5 @@ @apply text-lg; line-height: 1.75; } - table { - display: block; - overflow-x: auto; - max-width: 100%; - } } } diff --git a/hugo_stats.json b/hugo_stats.json index 4ea6d584b275..a94d109722b2 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -155,6 +155,7 @@ "bg-gradient-to-br", "bg-gradient-to-r", "bg-gradient-to-t", + "bg-gray-dark-200", "bg-gray-light-100", "bg-gray-light-200", "bg-gray-light-400", @@ -416,6 +417,7 @@ "outline-none", "overflow-clip", "overflow-hidden", + "overflow-x-auto", "overflow-x-hidden", "overflow-y-auto", "p-1", diff --git a/layouts/_default/_markup/render-table.html b/layouts/_default/_markup/render-table.html new file mode 100644 index 000000000000..1a32125cc1cb --- /dev/null +++ b/layouts/_default/_markup/render-table.html @@ -0,0 +1,39 @@ +
+ + + {{- range .THead }} + + {{- range . }} + + {{- end }} + + {{- end }} + + + {{- range .TBody }} + + {{- range . }} + + {{- end }} + + {{- end }} + +
+ {{- .Text -}} +
+ {{- .Text -}} +
+
From ecc54f2b3b356d8db9298a72301387990b50cd7b Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Thu, 10 Oct 2024 10:46:23 +0200 Subject: [PATCH 02/13] hugo: align cli table styles with defaults, add horizontal overflow Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- layouts/_default/cli.html | 176 +++++++++++++++++++------------------- 1 file changed, 90 insertions(+), 86 deletions(-) diff --git a/layouts/_default/cli.html b/layouts/_default/cli.html index 347cce40997e..58c99c2c2c9d 100644 --- a/layouts/_default/cli.html +++ b/layouts/_default/cli.html @@ -11,38 +11,40 @@
{{ partial "breadcrumbs.html" . }}

{{ .Title }}

- - - {{ with $data.short }} - - - - {{ end }} - {{ with $data.usage }} - - - - - {{ end }} - {{ with $data.aliases }} - {{ $aliases := strings.Replace . (fmt.Printf "%s, " page.Title) "" }} - - - - - {{ end }} - -
Description{{ . }} -
Usage{{ . }}
- Aliases - {{ partialCached "tooltip.html" "An alias is a short or memorable alternative for a longer command." "cli-alias" }} - -
- {{ range (strings.Split $aliases ", ") }} - {{ . }} - {{ end }} -
-
+
+ + + {{ with $data.short }} + + + + {{ end }} + {{ with $data.usage }} + + + + + {{ end }} + {{ with $data.aliases }} + {{ $aliases := strings.Replace . (fmt.Printf "%s, " page.Title) "" }} + + + + + {{ end }} + +
Description{{ . }} +
Usage{{ . }}
+ Aliases + {{ partialCached "tooltip.html" "An alias is a short or memorable alternative for a longer command." "cli-alias" }} + +
+ {{ range (strings.Split $aliases ", ") }} + {{ . }} + {{ end }} +
+
+
{{ .Content }} {{ if $data.deprecated }} {{ markdownify ` @@ -96,62 +98,64 @@

{{ .Title }}

{{ $heading := dict "level" 2 "text" "Options" }} {{ partialCached "heading.html" $heading "cli-options" }} {{ $.Scratch.Add "headings" $heading }} - - - - - - - - - - {{ range . }} +
+
OptionDefaultDescription
+ - {{ $short := .shorthand }} - {{ $long := .option }} - - {{ $skipDefault := `[],map[],false,0,0s,default,'',""` }} - - + + + - {{ end }} - -
- {{ with .details_url }} - - {{ with $short }}-{{ . }}, {{end}}--{{ $long }} - - {{ else }} - {{ with $short }}-{{ . }}, {{end}}--{{ $long }} - {{ end }} - - {{ with .default_value }} - {{ cond (in $skipDefault .) "" (printf "%s" . | safeHTML) }} - {{ end }} - - {{ with .min_api_version }} - {{ partialCached "components/badge.html" (dict "color" "blue" "content" (printf "API %s+" .)) "api" . }} - {{ end }} - {{ with .deprecated }} - {{ partialCached "components/badge.html" (dict "color" "red" "content" "Deprecated") "deprecated" }} - {{ end }} - {{ with .experimental }} - {{ partialCached "components/badge.html" (dict "color" "amber" "content" "experimental (daemon)") "exp" }} - {{ end }} - {{ with .experimentalcli }} - {{ partialCached "components/badge.html" (dict "color" "amber" "content" "experimental (CLI)") "exp-cli" }} - {{ end }} - {{ with .kubernetes }} - {{ partialCached "components/badge.html" (dict "color" "blue" "content" "Kubernetes") "k8s" }} - {{ end }} - {{ with .swarm }} - {{ partialCached "components/badge.html" (dict "color" "blue" "content" "Swarm") "swarm" }} - {{ end }} - {{ if .description }} - {{/* replace newlines in long desc with break tags */}} - {{ markdownify (strings.Replace .description "\n" "
") }} - {{ end }} -
OptionDefaultDescription
+ + + {{ range . }} + + {{ $short := .shorthand }} + {{ $long := .option }} + + {{ with .details_url }} + + {{ with $short }}-{{ . }}, {{end}}--{{ $long }} + + {{ else }} + {{ with $short }}-{{ . }}, {{end}}--{{ $long }} + {{ end }} + + {{ $skipDefault := `[],map[],false,0,0s,default,'',""` }} + + {{ with .default_value }} + {{ cond (in $skipDefault .) "" (printf "%s" . | safeHTML) }} + {{ end }} + + + {{ with .min_api_version }} + {{ partialCached "components/badge.html" (dict "color" "blue" "content" (printf "API %s+" .)) "api" . }} + {{ end }} + {{ with .deprecated }} + {{ partialCached "components/badge.html" (dict "color" "red" "content" "Deprecated") "deprecated" }} + {{ end }} + {{ with .experimental }} + {{ partialCached "components/badge.html" (dict "color" "amber" "content" "experimental (daemon)") "exp" }} + {{ end }} + {{ with .experimentalcli }} + {{ partialCached "components/badge.html" (dict "color" "amber" "content" "experimental (CLI)") "exp-cli" }} + {{ end }} + {{ with .kubernetes }} + {{ partialCached "components/badge.html" (dict "color" "blue" "content" "Kubernetes") "k8s" }} + {{ end }} + {{ with .swarm }} + {{ partialCached "components/badge.html" (dict "color" "blue" "content" "Swarm") "swarm" }} + {{ end }} + {{ if .description }} + {{/* replace newlines in long desc with break tags */}} + {{ markdownify (strings.Replace .description "\n" "
") }} + {{ end }} + + + {{ end }} + + + {{ end }} {{ end }} {{ with $data.examples }} From ba347ae523e2bb254ff391d767729eb9014d958a Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Thu, 10 Oct 2024 17:57:18 +0200 Subject: [PATCH 03/13] site: bump the border contrast for dark mode tables Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- hugo_stats.json | 1 - tailwind.config.js | 2 +- 2 files changed, 1 insertion(+), 2 deletions(-) diff --git a/hugo_stats.json b/hugo_stats.json index a94d109722b2..e1bc72a731dd 100644 --- a/hugo_stats.json +++ b/hugo_stats.json @@ -155,7 +155,6 @@ "bg-gradient-to-br", "bg-gradient-to-r", "bg-gradient-to-t", - "bg-gray-dark-200", "bg-gray-light-100", "bg-gray-light-200", "bg-gray-light-400", diff --git a/tailwind.config.js b/tailwind.config.js index 9a9a8472712e..b02e5903a22b 100644 --- a/tailwind.config.js +++ b/tailwind.config.js @@ -39,7 +39,7 @@ module.exports = { "--tw-prose-invert-hr": theme("colors.divider.dark"), "--tw-prose-invert-captions": theme("colors.gray.dark.600"), "--tw-prose-invert-th-borders": theme("colors.gray.dark.200"), - "--tw-prose-invert-td-borders": theme("colors.gray.dark.200"), + "--tw-prose-invert-td-borders": theme("colors.gray.dark.300"), }, }, }), From cb2ded39326c4ec5fd29cab264d1a3faaf4524ad Mon Sep 17 00:00:00 2001 From: Allie Sadler <102604716+aevesdocker@users.noreply.github.com> Date: Thu, 24 Oct 2024 16:12:36 +0100 Subject: [PATCH 04/13] ENGDOCS-2077 (#20911) ## Description RHEL moving to GA. This PR makes it visible in the TOC and adds the download links ## Related issues or tickets ## Reviews - [ ] Technical review - [ ] Editorial review - [ ] Product review --- content/manuals/desktop/install/linux/rhel.md | 19 ++++++++++++------- content/manuals/engine/install/_index.md | 4 +--- content/manuals/engine/install/rhel.md | 8 -------- 3 files changed, 13 insertions(+), 18 deletions(-) diff --git a/content/manuals/desktop/install/linux/rhel.md b/content/manuals/desktop/install/linux/rhel.md index ae941460c748..88132d0a083f 100644 --- a/content/manuals/desktop/install/linux/rhel.md +++ b/content/manuals/desktop/install/linux/rhel.md @@ -5,14 +5,14 @@ keywords: red hat, red hat enterprise linux, rhel, rpm, desktop, docker desktop, docker desktop for linux, dd4l title: Install Docker Desktop on RHEL linkTitle: RHEL -sitemap: false download-url-base: https://download.docker.com/linux/rhel +params: + sidebar: + badge: + color: green + text: New --- -{{% restricted title="Early Access" %}} -Docker Desktop on RHEL is in [Early Access](/manuals/release-lifecycle.md). -{{% /restricted %}} - > **Docker Desktop terms** > > Commercial use of Docker Desktop in larger enterprises (more than 250 @@ -27,6 +27,7 @@ To install Docker Desktop successfully, you must: - Meet the [general system requirements](_index.md#general-system-requirements). - Have a 64-bit version of either RHEL 8 or RHEL 9. +- Have a [Docker account](/manuals/accounts/create-account.md), as authentication is required for Docker Desktop on RHEL. If you don't have `pass` installed, or it can't be installed, you must enable [CodeReady Linux Builder (CRB) repository](https://access.redhat.com/articles/4348511) @@ -90,7 +91,7 @@ To install Docker Desktop on RHEL: $ sudo dnf config-manager --add-repo {{% param "download-url-base" %}}/docker-ce.repo ``` -2. Download the latest RPM package. +2. Download the latest [RPM package](https://desktop.docker.com/linux/main/amd64/docker-desktop-x86_64.rpm?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-linux-amd64). 3. Install the package with dnf as follows: @@ -114,7 +115,11 @@ The post-install script: {{< include "desktop-linux-launch.md" >}} ->**Tip** +> [!IMPORTANT] +> +> After launching Docker Desktop for RHEL, you must sign in to your Docker account to start using Docker Desktop. + +> [!TIP] > > To attach Red Hat subscription data to containers, see [Red Hat verified solution](https://access.redhat.com/solutions/5870841). > diff --git a/content/manuals/engine/install/_index.md b/content/manuals/engine/install/_index.md index 7f69abfd7182..b67dbdef795d 100644 --- a/content/manuals/engine/install/_index.md +++ b/content/manuals/engine/install/_index.md @@ -49,13 +49,11 @@ through Docker Desktop. For instructions on how to install Docker Desktop, see: | [Debian](debian.md) | ✅ | ✅ | ✅ | ✅ | | | [Fedora](fedora.md) | ✅ | ✅ | | ✅ | | | [Raspberry Pi OS (32-bit)](raspberry-pi-os.md) | | | ✅ | | | -| [RHEL](rhel.md) | 🚧 | 🚧 | | | ✅ | +| [RHEL](rhel.md) | ✅ | ✅ | | | ✅ | | [SLES](sles.md) | | | | | ✅ | | [Ubuntu](ubuntu.md) | ✅ | ✅ | ✅ | ✅ | ✅ | | [Binaries](binaries.md) | ✅ | ✅ | ✅ | | | -🚧 = Experimental - ### Other Linux distros > [!NOTE] diff --git a/content/manuals/engine/install/rhel.md b/content/manuals/engine/install/rhel.md index 3928f85904e1..07a8fae23085 100644 --- a/content/manuals/engine/install/rhel.md +++ b/content/manuals/engine/install/rhel.md @@ -18,14 +18,6 @@ aliases: download-url-base: https://download.docker.com/linux/rhel --- -{{% experimental %}} -Support for Docker Engine on RHEL x86_64 and aarch64 is experimental. -{{% /experimental %}} - -{{% restricted title="Docker Desktop for Linux is also available for RHEL." %}} -To get access, join the [Early Access Program](https://www.docker.com/docker-desktop-preview-program/). -{{% /restricted %}} - To get started with Docker Engine on RHEL, make sure you [meet the prerequisites](#prerequisites), and then follow the [installation steps](#installation-methods). From bd73f0ecd5eaa8d690dafbfce5fd699f7edf938c Mon Sep 17 00:00:00 2001 From: Allie Sadler <102604716+aevesdocker@users.noreply.github.com> Date: Thu, 24 Oct 2024 16:12:53 +0100 Subject: [PATCH 05/13] Engdocs 2267 (#21231) ## Description Ubuntu 24.04 now supported with latest DD release ## Related issues or tickets ## Reviews - [ ] Technical review - [ ] Editorial review - [ ] Product review --------- Co-authored-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/desktop/install/linux/ubuntu.md | 6 +----- 1 file changed, 1 insertion(+), 5 deletions(-) diff --git a/content/manuals/desktop/install/linux/ubuntu.md b/content/manuals/desktop/install/linux/ubuntu.md index e4f4962384ed..4a2b7bc05519 100644 --- a/content/manuals/desktop/install/linux/ubuntu.md +++ b/content/manuals/desktop/install/linux/ubuntu.md @@ -27,11 +27,7 @@ This page contains information on how to install, launch and upgrade Docker Desk To install Docker Desktop successfully, you must: - Meet the [general system requirements](_index.md#general-system-requirements). -- Have a 64-bit version of either the LTS version Ubuntu Jammy Jellyfish 22.04, or the current non-LTS version. Docker Desktop is supported on `x86_64` (or `amd64`) architecture. - > [!NOTE] - > - > The latest Ubuntu 24.04 LTS is not yet supported. Docker Desktop will fail to start. Due to a change in how the latest Ubuntu release restricts the unprivileged namespaces, `sudo sysctl -w kernel.apparmor_restrict_unprivileged_userns=0` needs to be run at least once. Refer to the [Ubuntu Blog](https://ubuntu.com/blog/ubuntu-23-10-restricted-unprivileged-user-namespaces) for more details. - +- Have an x86-64 system with Ubuntu 22.04, 24.04, or the latest non-LTS version. - For non-Gnome Desktop environments, `gnome-terminal` must be installed: ```console $ sudo apt install gnome-terminal From db0f1a6fa63500ea2ef3930bdde01b198fd6f575 Mon Sep 17 00:00:00 2001 From: Dorin-Andrei Geman Date: Thu, 24 Oct 2024 18:13:27 +0300 Subject: [PATCH 06/13] desktop/settings: Add Docker VMM (#20986) ## Description Add Docker VMM to the Settings docs for macOS. --------- Signed-off-by: Dorin Geman Co-authored-by: Mihaela Stoica --- content/manuals/desktop/settings.md | 12 +++++++----- 1 file changed, 7 insertions(+), 5 deletions(-) diff --git a/content/manuals/desktop/settings.md b/content/manuals/desktop/settings.md index 732f8ee2570f..81c53f20198e 100644 --- a/content/manuals/desktop/settings.md +++ b/content/manuals/desktop/settings.md @@ -59,17 +59,19 @@ If you choose the integrated terminal, you can run commands in a running contain and the ability to run Wasm applications with Docker. For more information, see [containerd image store](containerd.md). -- {{< badge color=blue text="Mac only" >}} **Use Virtualization framework**. Select to allow Docker Desktop to use the `virtualization.framework` instead of the `hypervisor.framework`. +- {{< badge color=blue text="Mac only" >}} **Choose Virtual Machine Manager (VMM)**. Choose the Virtual Machine Manager for creating and managing the Docker Desktop Linux VM. + - Select **Docker VMM** for the latest and most performant Hypervisor/Virtual Machine Manager. This option is available only on Apple Silicon Macs running macOS 12.5 or later and is currently in Beta. > [!TIP] > > Turn this setting on to make Docker Desktop run faster. + - Alternatively, you can choose **Apple Virtualization framework**, **QEMU** (for Apple Silicon), or **HyperKit** (for Intel Macs). For macOS 12.5 and later, Apple Virtualization framework is the default setting. -- {{< badge color=blue text="Mac only" >}}**Choose file sharing implementation for your containers**. Choose whether you want to share files using **VirtioFS**, **gRPC FUSE**, or **osxfs (Legacy)**. VirtioFS is only available for macOS versions 12.5 and above, and is turned on by default. - >**Tip** +- {{< badge color=blue text="Mac only" >}}**Choose file sharing implementation for your containers**. Choose whether you want to share files using **VirtioFS**, **gRPC FUSE**, or **osxfs (Legacy)**. VirtioFS is only available for macOS 12.5 and later, and is turned on by default. + > [!TIP] > - > Use VirtioFS for speedy file sharing. VirtioFS has reduced the time taken to complete filesystem operations by [up to 98%](https://github.com/docker/roadmap/issues/7#issuecomment-1044452206) + > Use VirtioFS for speedy file sharing. VirtioFS has reduced the time taken to complete filesystem operations by [up to 98%](https://github.com/docker/roadmap/issues/7#issuecomment-1044452206). It is the only file sharing implementation supported by Docker VMM. -- {{< badge color=blue text="Mac only" >}}**Use Rosetta for x86_64/amd64 emulation on Apple Silicon**. Turns on Rosetta to accelerate x86/AMD64 binary emulation on Apple Silicon. This option is only available if you have turned on **Virtualization framework** in the **General** settings tab. You must also be on macOS 13 or later. +- {{< badge color=blue text="Mac only" >}}**Use Rosetta for x86_64/amd64 emulation on Apple Silicon**. Turns on Rosetta to accelerate x86/AMD64 binary emulation on Apple Silicon. This option is only available if you have selected **Apple Virtualization framework** as the Virtual Machine Manager. You must also be on macOS 13 or later. - **Send usage statistics**. Select so Docker Desktop sends diagnostics, crash reports, and usage data. This information helps Docker improve and From 4753a92327741f84fbb931b00981bd772e17f41a Mon Sep 17 00:00:00 2001 From: Allie Sadler <102604716+aevesdocker@users.noreply.github.com> Date: Thu, 24 Oct 2024 16:14:00 +0100 Subject: [PATCH 07/13] ENGDOCS-2222 (#20912) ## Description New installations of Docker Desktop for Windows now require a Windows version of 19045 or later ## Related issues or tickets ## Reviews - [ ] Technical review - [ ] Editorial review - [ ] Product review --- .../manuals/desktop/install/windows-install.md | 18 ++++++------------ 1 file changed, 6 insertions(+), 12 deletions(-) diff --git a/content/manuals/desktop/install/windows-install.md b/content/manuals/desktop/install/windows-install.md index 81b97be8e32d..d7e733e13479 100644 --- a/content/manuals/desktop/install/windows-install.md +++ b/content/manuals/desktop/install/windows-install.md @@ -46,10 +46,8 @@ _For checksums, see [Release notes](../release-notes.md)_ {{< tab name="WSL 2 backend, x86_64" >}} - WSL version 1.1.3.0 or later. -- Windows 11 64-bit: Home or Pro version 21H2 or higher, or Enterprise or Education version 21H2 or higher. -- Windows 10 64-bit: - - We recommend Home or Pro 22H2 (build 19045) or higher, or Enterprise or Education 22H2 (build 19045) or higher. - - Minimum required is Home or Pro 21H2 (build 19044) or higher, or Enterprise or Education 21H2 (build 19044) or higher. +- Windows 11 64-bit: Home or Pro version 22H2 or higher, or Enterprise or Education version 22H2 or higher. +- Windows 10 64-bit: Minimum required is Home or Pro 22H2 (build 19045) or higher, or Enterprise or Education 22H2 (build 19045) or higher. - Turn on the WSL 2 feature on Windows. For detailed instructions, refer to the [Microsoft documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10). - The following hardware prerequisites are required to successfully run @@ -73,10 +71,8 @@ For more information on setting up WSL 2 with Docker Desktop, see [WSL](../wsl/_ {{< /tab >}} {{< tab name="Hyper-V backend, x86_64" >}} -- Windows 11 64-bit: Home or Pro version 21H2 or higher, or Enterprise or Education version 21H2 or higher. -- Windows 10 64-bit: - - Home or Pro 22H2 (build 19045) or higher, or Enterprise or Education 22H2 (build 19045) or higher is recommended. - - Minimum required is Home or Pro 21H2 (build 19044) or higher, or Enterprise or Education 21H2 (build 19044) or higher. +- Windows 11 64-bit: Home or Pro version 22H2 or higher, or Enterprise or Education version 22H2 or higher. +- Windows 10 64-bit: Minimum required is Home or Pro 22H2 (build 19045) or higher, or Enterprise or Education 22H2 (build 19045) or higher. - Turn on Hyper-V and Containers Windows features. - The following hardware prerequisites are required to successfully run Client Hyper-V on Windows 10: @@ -100,10 +96,8 @@ For more information on setting up WSL 2 with Docker Desktop, see [WSL](../wsl/_ {{< tab name="WSL 2 backend, Arm (Beta)" >}} - WSL version 1.1.3.0 or later. -- Windows 11 64-bit: Home or Pro version 21H2 or higher, or Enterprise or Education version 21H2 or higher. -- Windows 10 64-bit: - - Home or Pro 22H2 (build 19045) or higher, or Enterprise or Education 22H2 (build 19045) or higher is recommended. - - Minimum required is Home or Pro 21H2 (build 19044) or higher, or Enterprise or Education 21H2 (build 19044) or higher. +- Windows 11 64-bit: Home or Pro version 22H2 or higher, or Enterprise or Education version 22H2 or higher. +- Windows 10 64-bit: Minimum required is Home or Pro 22H2 (build 19045) or higher, or Enterprise or Education 22H2 (build 19045) or higher. - Turn on the WSL 2 feature on Windows. For detailed instructions, refer to the [Microsoft documentation](https://docs.microsoft.com/en-us/windows/wsl/install-win10). - The following hardware prerequisites are required to successfully run From 041329628a1dcdc0cbee6bc8eee6255253986cd6 Mon Sep 17 00:00:00 2001 From: Allie Sadler <102604716+aevesdocker@users.noreply.github.com> Date: Thu, 24 Oct 2024 16:14:14 +0100 Subject: [PATCH 08/13] ENGDOCS-2220 (#20882) ## Description ## Related issues or tickets ## Reviews - [ ] Technical review - [ ] Editorial review - [ ] Product review --- content/manuals/desktop/faqs/linuxfaqs.md | 8 +++++++- content/manuals/desktop/install/linux/_index.md | 5 +---- 2 files changed, 8 insertions(+), 5 deletions(-) diff --git a/content/manuals/desktop/faqs/linuxfaqs.md b/content/manuals/desktop/faqs/linuxfaqs.md index c0761110e0a9..0cd0dbc98566 100644 --- a/content/manuals/desktop/faqs/linuxfaqs.md +++ b/content/manuals/desktop/faqs/linuxfaqs.md @@ -40,7 +40,11 @@ Docker Desktop for Linux runs a Virtual Machine (VM) for the following reasons: Docker Desktop for Linux uses [VirtioFS](https://virtio-fs.gitlab.io/) as the default (and currently only) mechanism to enable file sharing between the host -and Docker Desktop VM. In order not to require elevated privileges, without +and Docker Desktop VM. + +{{< accordion title="Additional information for Docker Desktop version 4.34 and earlier" >}} + +In order not to require elevated privileges, without unnecessarily restricting operations on the shared files, Docker Desktop runs the file sharing service (`virtiofsd`) inside a user namespace (see `user_namespaces(7)`) with UID and GID mapping configured. As a result Docker @@ -88,6 +92,8 @@ easy access to such a file on the host. The problem is resolved by creating a group with the new GID and adding our user to it, or by setting a recursive ACL (see `setfacl(1)`) for folders shared with the Docker Desktop VM. +{{< /accordion >}} + ### Where does Docker Desktop store Linux containers? Docker Desktop stores Linux containers and images in a single, large "disk image" file in the Linux filesystem. This is different from Docker on Linux, which usually stores containers and images in the `/var/lib/docker` directory on the host's filesystem. diff --git a/content/manuals/desktop/install/linux/_index.md b/content/manuals/desktop/install/linux/_index.md index 34d62e598caf..b6c364d70aa1 100644 --- a/content/manuals/desktop/install/linux/_index.md +++ b/content/manuals/desktop/install/linux/_index.md @@ -116,9 +116,6 @@ Refer to the [Docker Context documentation](/manuals/engine/manage-resources/con Docker provides `.deb` and `.rpm` packages from the following Linux distributions and architectures: - - - | Platform | x86_64 / amd64 | |:------------------------|:-----------------------:| | [Ubuntu](ubuntu.md) | ✅ | @@ -142,7 +139,7 @@ To install Docker Desktop successfully, your Linux host must meet the following - Gnome, KDE, or MATE Desktop environment. - For many Linux distros, the Gnome environment does not support tray icons. To add support for tray icons, you need to install a Gnome extension. For example, [AppIndicator](https://extensions.gnome.org/extension/615/appindicator-support/). - At least 4 GB of RAM. -- Enable configuring ID mapping in user namespaces, see [File sharing](/manuals/desktop/faqs/linuxfaqs.md#how-do-i-enable-file-sharing). +- Enable configuring ID mapping in user namespaces, see [File sharing](/manuals/desktop/faqs/linuxfaqs.md#how-do-i-enable-file-sharing). Note that for Docker Desktop version 4.35 and later, this is not required anymore. - Recommended: [Initialize `pass`](/manuals/desktop/get-started.md#credentials-management-for-linux-users) for credentials management. Docker Desktop for Linux runs a Virtual Machine (VM). For more information on why, see [Why Docker Desktop for Linux runs a VM](/manuals/desktop/faqs/linuxfaqs.md#why-does-docker-desktop-for-linux-run-a-vm). From 64a3458c914f39ce15b29d732018510eb32fd0eb Mon Sep 17 00:00:00 2001 From: Craig Gumbley Date: Thu, 24 Oct 2024 16:14:39 +0100 Subject: [PATCH 09/13] Update references to settings.json to reflect new name (#21003) ## Description As part of the settings management project, settings.json has been renamed to settings-store.json. This change updates the public docs so that they reflect the new name. ## Related issues or tickets https://docker.atlassian.net/browse/DS-1506 ## Reviews - [x] Technical review @ebriney @aiordache - [x] Editorial review @aevesdocker - [x] Product review @KatTomrushka --- content/manuals/desktop/settings.md | 8 ++++---- content/manuals/desktop/troubleshoot/topics.md | 12 ++++++------ .../manuals/desktop/use-desktop/resource-saver.md | 8 ++++---- content/manuals/extensions/settings-feedback.md | 8 ++++---- .../hardened-desktop/settings-management/_index.md | 2 +- .../settings-management/configure.md | 2 +- 6 files changed, 20 insertions(+), 20 deletions(-) diff --git a/content/manuals/desktop/settings.md b/content/manuals/desktop/settings.md index 81c53f20198e..2c2b2831d90e 100644 --- a/content/manuals/desktop/settings.md +++ b/content/manuals/desktop/settings.md @@ -16,10 +16,10 @@ To navigate to **Settings** either: - Select the Docker menu {{< inline-image src="images/whale-x.svg" alt="whale menu" >}} and then **Settings** - Select the **Settings** icon from the Docker Desktop Dashboard. -You can also locate the `settings.json` file at: - - Mac: `~/Library/Group Containers/group.com.docker/settings.json` - - Windows: `C:\Users\[USERNAME]\AppData\Roaming\Docker\settings.json` - - Linux: `~/.docker/desktop/settings.json` +You can also locate the `settings-store.json` file (or `settings.json` for Docker Desktop versions 4.34 and earlier) at: + - Mac: `~/Library/Group Containers/group.com.docker/settings-store.json` + - Windows: `C:\Users\[USERNAME]\AppData\Roaming\Docker\settings-store.json` + - Linux: `~/.docker/desktop/settings-store.json` ## General diff --git a/content/manuals/desktop/troubleshoot/topics.md b/content/manuals/desktop/troubleshoot/topics.md index e92534096f4c..40c611da64ea 100644 --- a/content/manuals/desktop/troubleshoot/topics.md +++ b/content/manuals/desktop/troubleshoot/topics.md @@ -42,13 +42,13 @@ Docker Desktop uses hardware-accelerated graphics by default, which may cause pr Docker Desktop will launch successfully, but some screens may appear green, distorted, or have some visual artifacts. -To work around this issue, disable hardware acceleration by creating a `"disableHardwareAcceleration": true` entry in Docker Desktop's `settings.json` file. You can find this file at: +To work around this issue, disable hardware acceleration by creating a `"disableHardwareAcceleration": true` entry in Docker Desktop's `settings-store.json` file (or `settings.json` for Docker Desktop versions 4.34 and earlier). You can find this file at: -- Mac: `~/Library/Group Containers/group.com.docker/settings.json` -- Windows: `C:\Users\[USERNAME]\AppData\Roaming\Docker\settings.json` -- Linux: `~/.docker/desktop/settings.json.` +- Mac: `~/Library/Group Containers/group.com.docker/settings-store.json` +- Windows: `C:\Users\[USERNAME]\AppData\Roaming\Docker\settings-store.json` +- Linux: `~/.docker/desktop/settings-store.json.` -After updating the `settings.json` file, close and restart Docker Desktop to apply the changes. +After updating the `settings-store.json` file, close and restart Docker Desktop to apply the changes. ## Topics for Linux and Mac @@ -109,7 +109,7 @@ in the Apple documentation, and Docker Desktop [Mac system requirements](../inst In Docker Desktop version 4.19, gVisor replaced VPNKit to enhance the performance of VM networking when using the Virtualization framework on macOS 13 and above. -To continue using VPNKit, add `"networkType":"vpnkit"` to your `settings.json` file located at `~/Library/Group Containers/group.com.docker/settings.json`. +To continue using VPNKit, add `"networkType":"vpnkit"` to your `settings-store.json` file located at `~/Library/Group Containers/group.com.docker/settings-store.json`. ## Topics for Windows diff --git a/content/manuals/desktop/use-desktop/resource-saver.md b/content/manuals/desktop/use-desktop/resource-saver.md index 9dfea5575667..929163bf23e5 100644 --- a/content/manuals/desktop/use-desktop/resource-saver.md +++ b/content/manuals/desktop/use-desktop/resource-saver.md @@ -24,11 +24,11 @@ timer as shown below. If the values available aren't sufficient for your needs, you can reconfigure it to any value, as long as the value is larger than 30 seconds, by -changing `autoPauseTimeoutSeconds` in the Docker Desktop `settings.json` file: +changing `autoPauseTimeoutSeconds` in the Docker Desktop `settings-store.json` file (or `settings.json` for Docker Desktop versions 4.34 and earlier): - - Mac: `~/Library/Group Containers/group.com.docker/settings.json` - - Windows: `C:\Users\[USERNAME]\AppData\Roaming\Docker\settings.json` - - Linux: `~/.docker/desktop/settings.json` + - Mac: `~/Library/Group Containers/group.com.docker/settings-store.json` + - Windows: `C:\Users\[USERNAME]\AppData\Roaming\Docker\settings-store.json` + - Linux: `~/.docker/desktop/settings-store.json` There's no need to restart Docker Desktop after reconfiguring. diff --git a/content/manuals/extensions/settings-feedback.md b/content/manuals/extensions/settings-feedback.md index d233d19e5d29..c430289f7ae6 100644 --- a/content/manuals/extensions/settings-feedback.md +++ b/content/manuals/extensions/settings-feedback.md @@ -21,10 +21,10 @@ Docker Extensions is switched on by default. To change your settings: >**Note** > -> If you are an [organization owner](/manuals/admin/organization/manage-a-team.md#organization-owner), you can turn off extensions for your users. Open the `settings.json` file, and set `"extensionsEnabled"` to `false`. -> The `settings.json` file is located at: -> - `~/Library/Group Containers/group.com.docker/settings.json` on Mac -> - `C:\Users\[USERNAME]\AppData\Roaming\Docker\settings.json` on Windows +> If you are an [organization owner](/manuals/admin/organization/manage-a-team.md#organization-owner), you can turn off extensions for your users. Open the `settings-store.json` file, and set `"extensionsEnabled"` to `false`. +> The `settings-store.json` file (or `settings.json` for Docker Desktop versions 4.34 and earlier) is located at: +> - `~/Library/Group Containers/group.com.docker/settings-store.json` on Mac +> - `C:\Users\[USERNAME]\AppData\Roaming\Docker\settings-store.json` on Windows > > This can also be done with [Hardened Docker Desktop](/manuals/security/for-admins/hardened-desktop/_index.md) diff --git a/content/manuals/security/for-admins/hardened-desktop/settings-management/_index.md b/content/manuals/security/for-admins/hardened-desktop/settings-management/_index.md index 65f45d4984cb..03cd8324bf10 100644 --- a/content/manuals/security/for-admins/hardened-desktop/settings-management/_index.md +++ b/content/manuals/security/for-admins/hardened-desktop/settings-management/_index.md @@ -76,7 +76,7 @@ Docker doesn't automatically mandate that developers re-launch and re-authentica ### What do developers see when the settings are enforced? -Any settings that are enforced, are grayed out in Docker Desktop and the user is unable to edit them, either via the Docker Desktop UI, CLI, or the `settings.json` file. In addition, if Enhanced Container Isolation is enforced, developers can't use privileged containers or similar techniques to modify enforced settings within the Docker Desktop Linux VM, for example, reconfigure proxy and networking of reconfigure Docker Engine. +Any settings that are enforced, are grayed out in Docker Desktop and the user is unable to edit them, either via the Docker Desktop UI, CLI, or the `settings-store.json` file (or `settings.json` for Docker Desktop versions 4.34 and earlier). In addition, if Enhanced Container Isolation is enforced, developers can't use privileged containers or similar techniques to modify enforced settings within the Docker Desktop Linux VM, for example, reconfigure proxy and networking of reconfigure Docker Engine. ![Proxy settings grayed out](/assets/images/grayed-setting.png) diff --git a/content/manuals/security/for-admins/hardened-desktop/settings-management/configure.md b/content/manuals/security/for-admins/hardened-desktop/settings-management/configure.md index ad5feca71ca5..01e34698c583 100644 --- a/content/manuals/security/for-admins/hardened-desktop/settings-management/configure.md +++ b/content/manuals/security/for-admins/hardened-desktop/settings-management/configure.md @@ -59,7 +59,7 @@ If `locked: true`, users aren't able to edit this setting from Docker Desktop or If `locked: false`, it's similar to setting a factory default in that: - For new installs, `locked: false` pre-populates the relevant settings in the Docker Desktop UI, but users are able to modify it. -- If Docker Desktop is already installed and being used, `locked: false` is ignored. This is because existing users of Docker Desktop may have already updated a setting, which in turn will have been written to the relevant config file, for example the `settings.json` or `daemon.json`. In these instances, the user's preferences are respected and we don't alter these values. These can be controlled by the admin by setting `locked: true`. +- If Docker Desktop is already installed and being used, `locked: false` is ignored. This is because existing users of Docker Desktop may have already updated a setting, which in turn will have been written to the relevant config file, for example the `settings-store.json` (or `settings.json` for Docker Desktop versions 4.34 and earlier) or `daemon.json`. In these instances, the user's preferences are respected and we don't alter these values. These can be controlled by the admin by setting `locked: true`. The following `admin-settings.json` code and table provides an example of the required syntax and descriptions for parameters and values: From aa805b4c91af1afe3b8e5b7949f39007d739b5c8 Mon Sep 17 00:00:00 2001 From: Lorena Rangel Date: Thu, 24 Oct 2024 18:17:21 +0300 Subject: [PATCH 10/13] add Docker Desktop 4.35.0 release notes (#20909) ## Description Docker Desktop 4.35.0 release notes --------- Signed-off-by: Lorena Rangel Co-authored-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> Co-authored-by: Allie Sadler <102604716+aevesdocker@users.noreply.github.com> --- content/manuals/desktop/release-notes.md | 77 ++++++++++++++++++++++++ 1 file changed, 77 insertions(+) diff --git a/content/manuals/desktop/release-notes.md b/content/manuals/desktop/release-notes.md index 2b30615ca6ca..f01b1a08aec9 100644 --- a/content/manuals/desktop/release-notes.md +++ b/content/manuals/desktop/release-notes.md @@ -23,6 +23,83 @@ Docker Desktop versions older than 6 months from the latest release are not avai Take a look at the [Docker Public Roadmap](https://github.com/orgs/docker/projects/51/views/1?filterQuery=) to see what's coming next. +## 4.35.0 + +{{< release-date date="2024-10-24" >}} + +{{< desktop-install-v2 all=true beta_win_arm=true version="4.35.0" build_path="/172508/" >}} + +### New + +- Support for [Docker Desktop on Red Hat Enterprise Linux](/manuals/desktop/install/linux/rhel.md) is now generally available. +- Volume Backup and Share is now generally available and can be found in the **Volumes** view. +- Terminal support within Docker Desktop using system shells is now generally available. +- containerd image store: + - Improved output of `docker image inspect` to account for multi-platform images. + - Support multi-platform images via enabling users to pick a specific platform in `docker history`. +- Beta release of Docker VMM - the more performant alternative to Apple Virtualization Framework on macOS (requires Apple Silicon and macOS 12.5 or later). + +### Upgrades + +- [containerd v1.7.21](https://github.com/containerd/containerd/releases/tag/v1.7.21) +- [Docker Buildx v0.17.1](https://github.com/docker/buildx/releases/tag/v0.17.1) +- [Docker Compose v2.29.7](https://github.com/docker/compose/releases/tag/v2.29.7) +- [Docker Engine v27.3.1](https://docs.docker.com/engine/release-notes/27.3/#2731) +- [Docker Scout CLI v1.14.0](https://github.com/docker/scout-cli/releases/tag/v1.14.0) +- Docker Debug `v0.0.37` +- Linux kernel `v6.10.9` + +### Bug fixes and enhancements + +#### For all platforms + +- Fixed a bug where proxy settings in `daemon.json` would override proxies set in Docker Desktop settings. +- Fixed a bug where some Docker subnet ranges were not able to be used. +- Removed [docker-index](https://github.com/docker/index-cli-plugin) as it is now deprecated, you can use `docker scout cves fs://` instead. +- Fixed a bug where images couldn't be sorted or filtered by tag. Fixes [docker/for-win#14297](https://github.com/docker/for-win/issues/14297). +- Fixed a bug where the `docker` CLI did not work as expected when the `registry.json` file was malformed. +- Fixed a bug where the **Push to Docker Hub** action in the **Images** view would result in an `invalid tag format` error. Fixes [docker/for-win#14258](https://github.com/docker/for-win/issues/14258). +- Fixed an issue where Docker Desktop startup failed when ICMPv6 setup was not successful. +- Added drivers that allow USB/IP to work. +- Fixed a bug in Enhanced Container Isolation (ECI) [Docker socket mount permissions for derived images](/manuals/security/for-admins/hardened-desktop/enhanced-container-isolation/config.md) where it was incorrectly denying Docker socket mounts for some images when Docker Desktop uses the containerd image store. +- Enable `NFT_NUMGEN`, `NFT_FIB_IPV4` and `NFT_FIB_IPV6` kernel modules. +- Build UI: + - Highlight build check warnings in the **Completed builds** list. + - Improve visualization for the build time charts. + - Image tags added to **Build results** section under the **Info** tab. +- Improved efficiency of host-side disk utilization for fresh installations on Mac and Linux. +- Fixed a bug that prevented the Sign in enforcement popup to be triggered when token expires. +- Fixed a bug where containers would not be displayed in the GUI immediately after signing in when using [enforced sign-in](/manuals/security/for-admins/enforce-sign-in/_index.md). +- `settings.json` has been renamed to `settings-store.json` + +#### For Mac + +- Fixed a bug where auto-start containers could be misconfigured after changing filesharing type in settings. +- Fixed a bug that would cause `~/.docker/cli-plugins` to not be populated on start-up. +- Fixed a bug that prevented php composer or postgres to start as non root user. Fixes [docker/for-mac#7415](https://github.com/docker/for-mac/issues/7415). +- Fixed a bug that could cause file changed on the host to appear truncated. Fixes [docker/for-mac#7438](https://github.com/docker/for-mac/issues/7438). + +#### For Windows + +- New installations of Docker Desktop for Windows now require a Windows version of 19045 or later. +- Fixed an issue that caused a start failure if IPv6 is disabled either in the kernel config or via the kernel command-line in WSL. Fixes [docker/for-win#14240](https://github.com/docker/for-win/issues/14240) +- Fixed the **Clean / Purge data** button on Windows. Fixes [docker/for-win#12650](https://github.com/docker/for-win/issues/14308). +- Disk usage statistics is now displayed in the Dashboard footer installations. +- Improved recovery for WSL distribution issues. + +#### For Linux + +- Ubuntu 24.04 is now supported on Docker Desktop. + +### Known issues + +#### For Mac +- Since version 4.34.0, the toggle "Allow privileged port mapping" in the Advanced settings does not work. For more information, see [docker/for-mac#7460](https://github.com/docker/for-mac/issues/7460). + +#### For Windows + +- Users with versions 4.14.0 and earlier could encounter issues using the in-app update. To update to the latest version, download and install the latest Docker Desktop from this page. + ## 4.34.3 {{< release-date date="2024-10-09" >}} From cfd326bfa0456ebb86806974dc524bbab7ec4fae Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:19:03 +0200 Subject: [PATCH 11/13] [DNM] scout: create exceptions in docker desktop (#20797) Docker Desktop part of #20581, for 4.35 Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/scout/explore/exceptions.md | 27 ++++++++---- .../scout/how-tos/create-exceptions-gui.md | 41 ++++++++++++++----- 2 files changed, 51 insertions(+), 17 deletions(-) diff --git a/content/manuals/scout/explore/exceptions.md b/content/manuals/scout/explore/exceptions.md index f5d45cb03936..a654c20d3ac8 100644 --- a/content/manuals/scout/explore/exceptions.md +++ b/content/manuals/scout/explore/exceptions.md @@ -25,15 +25,14 @@ then that CVE is excluded from analysis results. To create an exception for an image, you can: - Create an exception in the [GUI](/manuals/scout/how-tos/create-exceptions-gui.md) of - Docker Scout Dashboard. - + Docker Scout Dashboard or Docker Desktop. - Create a [VEX](/manuals/scout/how-tos/create-exceptions-vex.md) document and attach it to the image. -The recommended way to create exceptions is to use Docker Scout Dashboard. The -GUI provides a user-friendly interface for creating exceptions. It also lets -you create exceptions for multiple images, or your entire organization, all at -once. +The recommended way to create exceptions is to use Docker Scout Dashboard or +Docker Desktop. The GUI provides a user-friendly interface for creating +exceptions. It also lets you create exceptions for multiple images, or your +entire organization, all at once. ## View exceptions @@ -46,7 +45,7 @@ To view exceptions for images, you need to have the appropriate permissions. are visible to anyone who can pull the image, since the VEX document is stored in the image manifest or on filesystem of the image. -### View exceptions in Docker Scout Dashboard +### View exceptions in Docker Scout Dashboard or Docker Desktop The [**Exceptions** tab](https://scout.docker.com/reports/vulnerabilities/exceptions) of the Vulnerabilities page in Docker Scout Dashboard lists all exceptions for @@ -59,10 +58,24 @@ selecting the action menu lets you edit or remove the exception. To view all exceptions for a specific image tag: +{{< tabs >}} +{{< tab name="Docker Scout Dashboard" >}} + 1. Go to the [Images page](https://scout.docker.com/reports/images). 2. Select the tag that you want to inspect. 3. Open the **Exceptions** tab. +{{< /tab >}} +{{< tab name="Docker Desktop" >}} + +1. Open the **Images** view in Docker Desktop. +2. Open the **Hub** tab. +3. Select the tag you want to inspect. +4. Open the **Exceptions** tab. + +{{< /tab >}} +{{< /tabs >}} + ### View exceptions in the CLI {{% experimental %}} diff --git a/content/manuals/scout/how-tos/create-exceptions-gui.md b/content/manuals/scout/how-tos/create-exceptions-gui.md index 8d80ab26fbbf..52567c7ef21d 100644 --- a/content/manuals/scout/how-tos/create-exceptions-gui.md +++ b/content/manuals/scout/how-tos/create-exceptions-gui.md @@ -1,24 +1,27 @@ --- title: Create an exception using the GUI -description: Create an exception for a vulnerability in an image using the Docker Scout Dashboard. -keywords: Docker, Docker Scout, vulnerability, exception, create, GUI +description: Create an exception for a vulnerability in an image using the Docker Scout Dashboard or Docker Desktop. +keywords: Docker, Docker Scout, Docker Desktop, vulnerability, exception, create, GUI --- -The Docker Scout Dashboard provides a user-friendly interface for creating -[exceptions](/manuals/scout/explore/exceptions.md) for vulnerabilities found in -container images. Exceptions let you acknowledge accepted risks or address -false positives in image analysis. +The Docker Scout Dashboard and Docker Desktop provide a user-friendly interface +for creating [exceptions](/manuals/scout/explore/exceptions.md) for +vulnerabilities found in container images. Exceptions let you acknowledge +accepted risks or address false positives in image analysis. ## Prerequisites -To create an in the Docker Scout Dashboard, you need a Docker account with -**Editor** or **Owner** permissions for the Docker organization that owns the -image. +To create an in the Docker Scout Dashboard or Docker Desktop, you need a Docker +account with **Editor** or **Owner** permissions for the Docker organization +that owns the image. ## Steps To create an exception for a vulnerability in an image using the Docker Scout -Dashboard: +Dashboard or Docker Desktop: + +{{< tabs >}} +{{< tab name="Docker Scout Dashboard" >}} 1. Go to the [Images page](https://scout.docker.com/reports/images). 2. Select the image tag that contains the vulnerability you want to create an @@ -76,3 +79,21 @@ tab of the [Vulnerabilities page](https://scout.docker.com/reports/vulnerabiliti in the Docker Scout Dashboard. {{% /create_panel.inline %}} + +{{< /tab >}} +{{< tab name="Docker Desktop" >}} + +1. Open the **Images** view in Docker Desktop. +2. Open the **Hub** tab. +3. Select the image tag that contains the vulnerability you want to create an + exception for. +4. Select the layer that contains the vulnerability you want to create an + exception for. +5. In the **Vulnerabilities** tab, find the vulnerability you want to create an + exception for. +6. Select the **Create exception** button next to the vulnerability. + +{{% create_panel.inline / %}} + +{{< /tab >}} +{{< /tabs >}} From 18b8d8acd13bdbf7d2f70129b61f15233cd01b1a Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:20:12 +0200 Subject: [PATCH 12/13] scout: view health scores in Docker Desktop (#20991) View health scores for images in Docker Desktop Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/desktop/use-desktop/images.md | 4 +++- .../manuals/scout/images/score-badges-dd.png | Bin 0 -> 56140 bytes content/manuals/scout/policy/scores.md | 21 +++++++++++++++++- 3 files changed, 23 insertions(+), 2 deletions(-) create mode 100644 content/manuals/scout/images/score-badges-dd.png diff --git a/content/manuals/desktop/use-desktop/images.md b/content/manuals/desktop/use-desktop/images.md index 27ddd9fadd80..7fbfe2c0c98a 100644 --- a/content/manuals/desktop/use-desktop/images.md +++ b/content/manuals/desktop/use-desktop/images.md @@ -95,7 +95,9 @@ When signed in, it shows you a list of images in Docker Hub organizations and re Select an organization from the drop-down to view a list of repositories for that organization. -If you have enabled [Docker Scout](../../scout/_index.md) on the repositories, image analysis results appear next to the image tags. +If you have enabled [Docker Scout](../../scout/_index.md) on the repositories, +image analysis results (and [health scores](/manuals/scout/policy/scores.md) if +your Docker organization is eligible) appear next to the image tags. Hovering over an image tag reveals two options: diff --git a/content/manuals/scout/images/score-badges-dd.png b/content/manuals/scout/images/score-badges-dd.png new file mode 100644 index 0000000000000000000000000000000000000000..f33374c1ec933f7159d8849c95a2e44b2ca0a509 GIT binary patch literal 56140 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 _f!;hO3YY=z$lrHz~kuC{> zAc&pd)0@{D;LRskD;2ACx&MH4Ne~1<>;zvwY#_A!3aj&QPw7(ml5|NB1VQWuUq1f! z`aAgT;}=+ihx=NWihHC>f*=TDSNME+{{GDka5?D_f*=eB_xJY-x-{(n`!VT~AP9mWW@L|kF|steH0}} +{{< tab name="Docker Hub" >}} + +To view the health score of an image in Docker Hub: 1. Go to Docker Hub and sign in. 2. Navigate to your organization's page. @@ -35,6 +38,22 @@ based on the latest pushed tag. ![Repository health score](../images/score-badges-repolist.png) +{{< /tab >}} +{{< tab name="Docker Desktop" >}} + +To view the health score of an image in Docker Desktop: + +1. Open Docker Desktop and sign in to your Docker account. +2. Navigate to the **Images** view and select the **Hub** tab. + +In the list of repositories, the **Health** column displays the scores of the +different tags that have been pushed to Docker Hub. + +![Repository health score](../images/score-badges-dd.png) + +{{< /tab >}} +{{< /tabs >}} + The health score badge is color-coded to indicate the overall health of the repository: From 37eb9f7342fb732068b5da2b2068062d151db572 Mon Sep 17 00:00:00 2001 From: David Karlsson <35727626+dvdksn@users.noreply.github.com> Date: Thu, 24 Oct 2024 17:22:53 +0200 Subject: [PATCH 13/13] desktop: proxy config not supported through daemon.json/config.json (#20905) ## Description Docker Desktop does not respect proxy configuration through config.json (cli) or daemon.json (dameon). Proxy config for DD is only supported through the settings menu or via settings management. ## Related issues or tickets docker/pinata#30436 Signed-off-by: David Karlsson <35727626+dvdksn@users.noreply.github.com> --- content/manuals/desktop/settings.md | 6 +++++- content/manuals/engine/daemon/proxy.md | 5 +++++ 2 files changed, 10 insertions(+), 1 deletion(-) diff --git a/content/manuals/desktop/settings.md b/content/manuals/desktop/settings.md index 2c2b2831d90e..0a18c3ad90ce 100644 --- a/content/manuals/desktop/settings.md +++ b/content/manuals/desktop/settings.md @@ -260,8 +260,12 @@ The HTTPS proxy settings used for scanning images are set using the `HTTPS_PROXY > If you are using a PAC file hosted on a web server, make sure to add the MIME type `application/x-ns-proxy-autoconfig` for the `.pac` file extension on the server or website. Without this configuration, the PAC file may not be parsed correctly. > [!IMPORTANT] +> You cannot configure the proxy settings using the Docker daemon configuration +> file (`daemon.json`), and we recommend you do not configure the proxy +> settings via the Docker CLI configuration file (`config.json`). > -> You do not need to separately configure proxy settings for the Docker CLI or Docker daemon. +> To manage proxy configurations for Docker Desktop, configure the settings in +> the Docker Desktop app or use [Settings Management](/manuals/security/for-admins/hardened-desktop/settings-management/_index.md). #### Proxy authentication diff --git a/content/manuals/engine/daemon/proxy.md b/content/manuals/engine/daemon/proxy.md index 2166665e9bdb..158feecf85ab 100644 --- a/content/manuals/engine/daemon/proxy.md +++ b/content/manuals/engine/daemon/proxy.md @@ -23,6 +23,11 @@ This page describes how to configure a proxy for the Docker daemon. For instructions on configuring proxy settings for the Docker CLI, see [Configure Docker CLI to use a proxy server](/manuals/engine/cli/proxy.md). +> [!IMPORTANT] +> Proxy configurations specified in the `daemon.json` are ignored by Docker +> Desktop. If you use Docker Desktop, you can configure proxies using the +> [Docker Desktop settings](/manuals/desktop/settings.md#proxies). + There are two ways you can configure these settings: - [Configuring the daemon](#daemon-configuration) through a configuration file or CLI flags