diff --git a/.markdownlint.json b/.markdownlint.json
index 58ab5995dd85..86037b36a7b8 100644
--- a/.markdownlint.json
+++ b/.markdownlint.json
@@ -13,7 +13,7 @@
"no-space-in-code": true,
"no-space-in-links": true,
"no-empty-links": true,
- "ol-prefix": {"style": "ordered"},
+ "ol-prefix": {"style": "one_or_ordered"},
"no-reversed-links": true,
"reference-links-images": {
"shortcut_syntax": false
diff --git a/.vale.ini b/.vale.ini
index 710e13b2ff2f..b61d09a14862 100644
--- a/.vale.ini
+++ b/.vale.ini
@@ -15,3 +15,10 @@ TokenIgnores = ({{[%<] .* [%>]}}.*?{{[%<] ?/.* [%>]}}), \
# Exclude `{{< myshortcode `This is some HTML, ... >}}`
BlockIgnores = (?sm)^({{[%<] \w+ [^{]*?\s[%>]}})\n$, \
(?s) *({{< highlight [^>]* ?>}}.*?{{< ?/ ?highlight >}})
+
+# Disable rules for genered content
+# Content is checked upstream
+[**/{model-cli/docs/reference,content/reference/cli/docker/model}/**.md]
+BasedOnStyles = Vale
+Vale.Spelling = NO
+Vale.Terms = NO
diff --git a/.vscode/docker.code-snippets b/.vscode/docker.code-snippets
index 200264824d67..18fde97b1548 100644
--- a/.vscode/docker.code-snippets
+++ b/.vscode/docker.code-snippets
@@ -39,4 +39,9 @@
],
"description": "Insert a Hugo tabs block with two tabs and snippet stops for names and content",
},
+ "Insert a Button": {
+ "prefix": ["button"],
+ "body": ["{{< button url=\"$1\" text=\"$2\" >}}"],
+ "description": "Insert a Hugo button",
+ },
}
diff --git a/_vale/config/vocabularies/Docker/accept.txt b/_vale/config/vocabularies/Docker/accept.txt
index aa324781bbee..528d6805dd6c 100644
--- a/_vale/config/vocabularies/Docker/accept.txt
+++ b/_vale/config/vocabularies/Docker/accept.txt
@@ -4,6 +4,7 @@ Anchore
Apple
Artifactory
Azure
+AD
Btrfs
BuildKit
BusyBox
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model.yaml
new file mode 100644
index 000000000000..e33eb58af8e8
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model.yaml
@@ -0,0 +1,48 @@
+command: docker model
+short: Docker Model Runner
+long: |-
+ Use Docker Model Runner to run and interact with AI models directly from the command line.
+ For more information, see the [documentation](/model-runner/)
+pname: docker
+plink: docker.yaml
+cname:
+ - docker model df
+ - docker model inspect
+ - docker model install-runner
+ - docker model list
+ - docker model logs
+ - docker model package
+ - docker model ps
+ - docker model pull
+ - docker model push
+ - docker model rm
+ - docker model run
+ - docker model status
+ - docker model tag
+ - docker model uninstall-runner
+ - docker model unload
+ - docker model version
+clink:
+ - docker_model_df.yaml
+ - docker_model_inspect.yaml
+ - docker_model_install-runner.yaml
+ - docker_model_list.yaml
+ - docker_model_logs.yaml
+ - docker_model_package.yaml
+ - docker_model_ps.yaml
+ - docker_model_pull.yaml
+ - docker_model_push.yaml
+ - docker_model_rm.yaml
+ - docker_model_run.yaml
+ - docker_model_status.yaml
+ - docker_model_tag.yaml
+ - docker_model_uninstall-runner.yaml
+ - docker_model_unload.yaml
+ - docker_model_version.yaml
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose.yaml
new file mode 100644
index 000000000000..c87cca134ce3
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose.yaml
@@ -0,0 +1,26 @@
+command: docker model compose
+pname: docker model
+plink: docker_model.yaml
+cname:
+ - docker model compose down
+ - docker model compose up
+clink:
+ - docker_model_compose_down.yaml
+ - docker_model_compose_up.yaml
+options:
+ - option: project-name
+ value_type: string
+ description: compose project name
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: true
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose_down.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose_down.yaml
new file mode 100644
index 000000000000..9020db5199a8
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose_down.yaml
@@ -0,0 +1,32 @@
+command: docker model compose down
+usage: docker model compose down
+pname: docker model compose
+plink: docker_model_compose.yaml
+options:
+ - option: model
+ value_type: stringArray
+ default_value: '[]'
+ description: model to use
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+inherited_options:
+ - option: project-name
+ value_type: string
+ description: compose project name
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: true
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose_up.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose_up.yaml
new file mode 100644
index 000000000000..e377b2cfca5b
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_compose_up.yaml
@@ -0,0 +1,32 @@
+command: docker model compose up
+usage: docker model compose up
+pname: docker model compose
+plink: docker_model_compose.yaml
+options:
+ - option: model
+ value_type: stringArray
+ default_value: '[]'
+ description: model to use
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+inherited_options:
+ - option: project-name
+ value_type: string
+ description: compose project name
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: true
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_df.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_df.yaml
new file mode 100644
index 000000000000..f1b3fca07c0d
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_df.yaml
@@ -0,0 +1,13 @@
+command: docker model df
+short: Show Docker Model Runner disk usage
+long: Show Docker Model Runner disk usage
+usage: docker model df
+pname: docker model
+plink: docker_model.yaml
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_inspect.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_inspect.yaml
new file mode 100644
index 000000000000..559d2260817a
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_inspect.yaml
@@ -0,0 +1,24 @@
+command: docker model inspect
+short: Display detailed information on one model
+long: Display detailed information on one model
+usage: docker model inspect MODEL
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: openai
+ value_type: bool
+ default_value: "false"
+ description: List model in an OpenAI format
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_install-runner.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_install-runner.yaml
new file mode 100644
index 000000000000..60443efb4048
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_install-runner.yaml
@@ -0,0 +1,35 @@
+command: docker model install-runner
+short: Install Docker Model Runner (Docker Engine only)
+long: |
+ This command runs implicitly when a docker model command is executed. You can run this command explicitly to add a new configuration.
+usage: docker model install-runner
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: gpu
+ value_type: string
+ default_value: auto
+ description: Specify GPU support (none|auto|cuda)
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+ - option: port
+ value_type: uint16
+ default_value: "12434"
+ description: Docker container port for Docker Model Runner
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_list.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_list.yaml
new file mode 100644
index 000000000000..292704ade7c5
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_list.yaml
@@ -0,0 +1,46 @@
+command: docker model list
+aliases: docker model list, docker model ls
+short: List the models pulled to your local environment
+long: List the models pulled to your local environment
+usage: docker model list [OPTIONS]
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: json
+ value_type: bool
+ default_value: "false"
+ description: List models in a JSON format
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+ - option: openai
+ value_type: bool
+ default_value: "false"
+ description: List models in an OpenAI format
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+ - option: quiet
+ shorthand: q
+ value_type: bool
+ default_value: "false"
+ description: Only show model IDs
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_logs.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_logs.yaml
new file mode 100644
index 000000000000..84a01f89e955
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_logs.yaml
@@ -0,0 +1,35 @@
+command: docker model logs
+short: Fetch the Docker Model Runner logs
+long: Fetch the Docker Model Runner logs
+usage: docker model logs [OPTIONS]
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: follow
+ shorthand: f
+ value_type: bool
+ default_value: "false"
+ description: View logs with real-time streaming
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+ - option: no-engines
+ value_type: bool
+ default_value: "false"
+ description: Exclude inference engine logs from the output
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_package.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_package.yaml
new file mode 100644
index 000000000000..1e5a7ec9554e
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_package.yaml
@@ -0,0 +1,46 @@
+command: docker model package
+short: |
+ Package a GGUF file into a Docker model OCI artifact, with optional licenses, and pushes it to the specified registry
+long: |
+ Package a GGUF file into a Docker model OCI artifact, with optional licenses, and pushes it to the specified registry
+usage: docker model package --gguf [--license ...] --push TARGET
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: gguf
+ value_type: string
+ description: absolute path to gguf file (required)
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+ - option: license
+ shorthand: l
+ value_type: stringArray
+ default_value: '[]'
+ description: absolute path to a license file
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+ - option: push
+ value_type: bool
+ default_value: "false"
+ description: push to registry (required)
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_ps.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_ps.yaml
new file mode 100644
index 000000000000..54ac98561c36
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_ps.yaml
@@ -0,0 +1,13 @@
+command: docker model ps
+short: List running models
+long: List running models
+usage: docker model ps
+pname: docker model
+plink: docker_model.yaml
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_pull.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_pull.yaml
new file mode 100644
index 000000000000..f10e4368ef6d
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_pull.yaml
@@ -0,0 +1,28 @@
+command: docker model pull
+short: Pull a model from Docker Hub or HuggingFace to your local environment
+long: |
+ Pull a model to your local environment. Downloaded models also appear in the Docker Desktop Dashboard.
+usage: docker model pull MODEL
+pname: docker model
+plink: docker_model.yaml
+examples: |-
+ ### Pulling a model from Docker Hub
+
+ ```console
+ docker model pull ai/smollm2
+ ```
+
+ ### Pulling from HuggingFace
+
+ You can pull GGUF models directly from [Hugging Face](https://huggingface.co/models?library=gguf).
+
+ ```console
+ docker model pull hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF
+ ```
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_push.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_push.yaml
new file mode 100644
index 000000000000..4bd953bc0d8b
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_push.yaml
@@ -0,0 +1,13 @@
+command: docker model push
+short: Push a model to Docker Hub
+long: Push a model to Docker Hub
+usage: docker model push MODEL
+pname: docker model
+plink: docker_model.yaml
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_rm.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_rm.yaml
new file mode 100644
index 000000000000..426bfd88da80
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_rm.yaml
@@ -0,0 +1,25 @@
+command: docker model rm
+short: Remove local models downloaded from Docker Hub
+long: Remove local models downloaded from Docker Hub
+usage: docker model rm [MODEL...]
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: force
+ shorthand: f
+ value_type: bool
+ default_value: "false"
+ description: Forcefully remove the model
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_run.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_run.yaml
new file mode 100644
index 000000000000..4d18d3c6f6fb
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_run.yaml
@@ -0,0 +1,57 @@
+command: docker model run
+short: Run a model and interact with it using a submitted prompt or chat mode
+long: |-
+ When you run a model, Docker calls an inference server API endpoint hosted by the Model Runner through Docker Desktop. The model stays in memory until another model is requested, or until a pre-defined inactivity timeout is reached (currently 5 minutes).
+
+ You do not have to use Docker model run before interacting with a specific model from a host process or from within a container. Model Runner transparently loads the requested model on-demand, assuming it has been pulled and is locally available.
+
+ You can also use chat mode in the Docker Desktop Dashboard when you select the model in the **Models** tab.
+usage: docker model run MODEL [PROMPT]
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: debug
+ value_type: bool
+ default_value: "false"
+ description: Enable debug logging
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+examples: |-
+ ### One-time prompt
+
+ ```console
+ docker model run ai/smollm2 "Hi"
+ ```
+
+ Output:
+
+ ```console
+ Hello! How can I assist you today?
+ ```
+
+ ### Interactive chat
+
+ ```console
+ docker model run ai/smollm2
+ ```
+
+ Output:
+
+ ```console
+ Interactive chat mode started. Type '/bye' to exit.
+ > Hi
+ Hi there! It's SmolLM, AI assistant. How can I help you today?
+ > /bye
+ Chat session ended.
+ ```
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_status.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_status.yaml
new file mode 100644
index 000000000000..07da71d0f79b
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_status.yaml
@@ -0,0 +1,14 @@
+command: docker model status
+short: Check if the Docker Model Runner is running
+long: |
+ Check whether the Docker Model Runner is running and displays the current inference engine.
+usage: docker model status
+pname: docker model
+plink: docker_model.yaml
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_tag.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_tag.yaml
new file mode 100644
index 000000000000..2aa0b35e58f4
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_tag.yaml
@@ -0,0 +1,14 @@
+command: docker model tag
+short: Tag a model
+long: |
+ Specify a particular version or variant of the model. If no tag is provided, Docker defaults to `latest`.
+usage: docker model tag SOURCE TARGET
+pname: docker model
+plink: docker_model.yaml
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_uninstall-runner.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_uninstall-runner.yaml
new file mode 100644
index 000000000000..33f601535538
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_uninstall-runner.yaml
@@ -0,0 +1,34 @@
+command: docker model uninstall-runner
+short: Uninstall Docker Model Runner
+long: Uninstall Docker Model Runner
+usage: docker model uninstall-runner
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: images
+ value_type: bool
+ default_value: "false"
+ description: Remove docker/model-runner images
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+ - option: models
+ value_type: bool
+ default_value: "false"
+ description: Remove model storage volume
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_unload.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_unload.yaml
new file mode 100644
index 000000000000..589afe593629
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_unload.yaml
@@ -0,0 +1,33 @@
+command: docker model unload
+short: Unload running models
+long: Unload running models
+usage: docker model unload (MODEL [--backend BACKEND] | --all)
+pname: docker model
+plink: docker_model.yaml
+options:
+ - option: all
+ value_type: bool
+ default_value: "false"
+ description: Unload all running models
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+ - option: backend
+ value_type: string
+ description: Optional backend to target
+ deprecated: false
+ hidden: false
+ experimental: false
+ experimentalcli: false
+ kubernetes: false
+ swarm: false
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/docker_model_version.yaml b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_version.yaml
new file mode 100644
index 000000000000..e391942f6ad0
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/docker_model_version.yaml
@@ -0,0 +1,13 @@
+command: docker model version
+short: Show the Docker Model Runner version
+long: Show the Docker Model Runner version
+usage: docker model version
+pname: docker model
+plink: docker_model.yaml
+deprecated: false
+hidden: false
+experimental: false
+experimentalcli: true
+kubernetes: false
+swarm: false
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model.md b/_vendor/github.com/docker/model-cli/docs/reference/model.md
new file mode 100644
index 000000000000..f9032718071e
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model.md
@@ -0,0 +1,34 @@
+# docker model
+
+
+Docker Model Runner (EXPERIMENTAL)
+
+### Subcommands
+
+| Name | Description |
+|:------------------------------------------------|:----------------------------------------------------------------------------------------------------------------------|
+| [`df`](model_df.md) | Show Docker Model Runner disk usage |
+| [`inspect`](model_inspect.md) | Display detailed information on one model |
+| [`install-runner`](model_install-runner.md) | Install Docker Model Runner (Docker Engine only) |
+| [`list`](model_list.md) | List the models pulled to your local environment |
+| [`logs`](model_logs.md) | Fetch the Docker Model Runner logs |
+| [`package`](model_package.md) | Package a GGUF file into a Docker model OCI artifact, with optional licenses, and pushes it to the specified registry |
+| [`ps`](model_ps.md) | List running models |
+| [`pull`](model_pull.md) | Pull a model from Docker Hub or HuggingFace to your local environment |
+| [`push`](model_push.md) | Push a model to Docker Hub |
+| [`rm`](model_rm.md) | Remove local models downloaded from Docker Hub |
+| [`run`](model_run.md) | Run a model and interact with it using a submitted prompt or chat mode |
+| [`status`](model_status.md) | Check if the Docker Model Runner is running |
+| [`tag`](model_tag.md) | Tag a model |
+| [`uninstall-runner`](model_uninstall-runner.md) | Uninstall Docker Model Runner |
+| [`unload`](model_unload.md) | Unload running models |
+| [`version`](model_version.md) | Show the Docker Model Runner version |
+
+
+
+
+
+## Description
+
+Use Docker Model Runner to run and interact with AI models directly from the command line.
+For more information, see the [documentation](https://docs.docker.com/model-runner/)
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_df.md b/_vendor/github.com/docker/model-cli/docs/reference/model_df.md
new file mode 100644
index 000000000000..e6a4073670b4
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_df.md
@@ -0,0 +1,8 @@
+# docker model df
+
+
+Show Docker Model Runner disk usage
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_inspect.md b/_vendor/github.com/docker/model-cli/docs/reference/model_inspect.md
new file mode 100644
index 000000000000..e9b6b1eff540
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_inspect.md
@@ -0,0 +1,14 @@
+# docker model inspect
+
+
+Display detailed information on one model
+
+### Options
+
+| Name | Type | Default | Description |
+|:-----------|:-------|:--------|:-------------------------------|
+| `--openai` | `bool` | | List model in an OpenAI format |
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_install-runner.md b/_vendor/github.com/docker/model-cli/docs/reference/model_install-runner.md
new file mode 100644
index 000000000000..afcbbf2e56f3
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_install-runner.md
@@ -0,0 +1,18 @@
+# docker model install-runner
+
+
+Install Docker Model Runner (Docker Engine only)
+
+### Options
+
+| Name | Type | Default | Description |
+|:---------|:---------|:--------|:----------------------------------------------|
+| `--gpu` | `string` | `auto` | Specify GPU support (none\|auto\|cuda) |
+| `--port` | `uint16` | `12434` | Docker container port for Docker Model Runner |
+
+
+
+
+## Description
+
+ This command runs implicitly when a docker model command is executed. You can run this command explicitly to add a new configuration.
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_list.md b/_vendor/github.com/docker/model-cli/docs/reference/model_list.md
new file mode 100644
index 000000000000..b6c051f28dd0
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_list.md
@@ -0,0 +1,20 @@
+# docker model list
+
+
+List the models pulled to your local environment
+
+### Aliases
+
+`docker model list`, `docker model ls`
+
+### Options
+
+| Name | Type | Default | Description |
+|:----------------|:-------|:--------|:--------------------------------|
+| `--json` | `bool` | | List models in a JSON format |
+| `--openai` | `bool` | | List models in an OpenAI format |
+| `-q`, `--quiet` | `bool` | | Only show model IDs |
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_logs.md b/_vendor/github.com/docker/model-cli/docs/reference/model_logs.md
new file mode 100644
index 000000000000..8c5810924a18
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_logs.md
@@ -0,0 +1,15 @@
+# docker model logs
+
+
+Fetch the Docker Model Runner logs
+
+### Options
+
+| Name | Type | Default | Description |
+|:-----------------|:-------|:--------|:----------------------------------------------|
+| `-f`, `--follow` | `bool` | | View logs with real-time streaming |
+| `--no-engines` | `bool` | | Exclude inference engine logs from the output |
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_package.md b/_vendor/github.com/docker/model-cli/docs/reference/model_package.md
new file mode 100644
index 000000000000..4cfccf302157
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_package.md
@@ -0,0 +1,16 @@
+# docker model package
+
+
+Package a GGUF file into a Docker model OCI artifact, with optional licenses, and pushes it to the specified registry
+
+### Options
+
+| Name | Type | Default | Description |
+|:------------------|:--------------|:--------|:--------------------------------------|
+| `--gguf` | `string` | | absolute path to gguf file (required) |
+| `-l`, `--license` | `stringArray` | | absolute path to a license file |
+| `--push` | `bool` | | push to registry (required) |
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_ps.md b/_vendor/github.com/docker/model-cli/docs/reference/model_ps.md
new file mode 100644
index 000000000000..15f5371553f6
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_ps.md
@@ -0,0 +1,8 @@
+# docker model ps
+
+
+List running models
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_pull.md b/_vendor/github.com/docker/model-cli/docs/reference/model_pull.md
new file mode 100644
index 000000000000..bae41fc31a1b
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_pull.md
@@ -0,0 +1,27 @@
+# docker model pull
+
+
+Pull a model from Docker Hub or HuggingFace to your local environment
+
+
+
+
+## Description
+
+Pull a model to your local environment. Downloaded models also appear in the Docker Desktop Dashboard.
+
+## Examples
+
+### Pulling a model from Docker Hub
+
+```console
+docker model pull ai/smollm2
+```
+
+### Pulling from HuggingFace
+
+You can pull GGUF models directly from [Hugging Face](https://huggingface.co/models?library=gguf).
+
+```console
+docker model pull hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF
+```
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_push.md b/_vendor/github.com/docker/model-cli/docs/reference/model_push.md
new file mode 100644
index 000000000000..b50a425e84de
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_push.md
@@ -0,0 +1,13 @@
+# docker model push
+
+
+Push a model to Docker Hub
+
+
+
+
+### Example
+
+```console
+docker model push /
+```
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_rm.md b/_vendor/github.com/docker/model-cli/docs/reference/model_rm.md
new file mode 100644
index 000000000000..6463903bd899
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_rm.md
@@ -0,0 +1,14 @@
+# docker model rm
+
+
+Remove local models downloaded from Docker Hub
+
+### Options
+
+| Name | Type | Default | Description |
+|:----------------|:-------|:--------|:----------------------------|
+| `-f`, `--force` | `bool` | | Forcefully remove the model |
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_run.md b/_vendor/github.com/docker/model-cli/docs/reference/model_run.md
new file mode 100644
index 000000000000..3010f26c27ce
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_run.md
@@ -0,0 +1,51 @@
+# docker model run
+
+
+Run a model and interact with it using a submitted prompt or chat mode
+
+### Options
+
+| Name | Type | Default | Description |
+|:----------|:-------|:--------|:---------------------|
+| `--debug` | `bool` | | Enable debug logging |
+
+
+
+
+## Description
+
+When you run a model, Docker calls an inference server API endpoint hosted by the Model Runner through Docker Desktop. The model stays in memory until another model is requested, or until a pre-defined inactivity timeout is reached (currently 5 minutes).
+
+You do not have to use Docker model run before interacting with a specific model from a host process or from within a container. Model Runner transparently loads the requested model on-demand, assuming it has been pulled and is locally available.
+
+You can also use chat mode in the Docker Desktop Dashboard when you select the model in the **Models** tab.
+
+## Examples
+
+### One-time prompt
+
+```console
+docker model run ai/smollm2 "Hi"
+```
+
+Output:
+
+```console
+Hello! How can I assist you today?
+```
+
+### Interactive chat
+
+```console
+docker model run ai/smollm2
+```
+
+Output:
+
+```console
+Interactive chat mode started. Type '/bye' to exit.
+> Hi
+Hi there! It's SmolLM, AI assistant. How can I help you today?
+> /bye
+Chat session ended.
+```
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_status.md b/_vendor/github.com/docker/model-cli/docs/reference/model_status.md
new file mode 100644
index 000000000000..72a0bf7901f0
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_status.md
@@ -0,0 +1,11 @@
+# docker model status
+
+
+Check if the Docker Model Runner is running
+
+
+
+
+## Description
+
+Check whether the Docker Model Runner is running and displays the current inference engine.
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_tag.md b/_vendor/github.com/docker/model-cli/docs/reference/model_tag.md
new file mode 100644
index 000000000000..3f1615e296fc
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_tag.md
@@ -0,0 +1,11 @@
+# docker model tag
+
+
+Tag a model
+
+
+
+
+## Description
+
+Specify a particular version or variant of the model. If no tag is provided, Docker defaults to `latest`.
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_uninstall-runner.md b/_vendor/github.com/docker/model-cli/docs/reference/model_uninstall-runner.md
new file mode 100644
index 000000000000..3c4a79ceb295
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_uninstall-runner.md
@@ -0,0 +1,15 @@
+# docker model uninstall-runner
+
+
+Uninstall Docker Model Runner
+
+### Options
+
+| Name | Type | Default | Description |
+|:-----------|:-------|:--------|:----------------------------------|
+| `--images` | `bool` | | Remove docker/model-runner images |
+| `--models` | `bool` | | Remove model storage volume |
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_unload.md b/_vendor/github.com/docker/model-cli/docs/reference/model_unload.md
new file mode 100644
index 000000000000..70d7f8f2884c
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_unload.md
@@ -0,0 +1,15 @@
+# docker model unload
+
+
+Unload running models
+
+### Options
+
+| Name | Type | Default | Description |
+|:------------|:---------|:--------|:---------------------------|
+| `--all` | `bool` | | Unload all running models |
+| `--backend` | `string` | | Optional backend to target |
+
+
+
+
diff --git a/_vendor/github.com/docker/model-cli/docs/reference/model_version.md b/_vendor/github.com/docker/model-cli/docs/reference/model_version.md
new file mode 100644
index 000000000000..eb32c61fd979
--- /dev/null
+++ b/_vendor/github.com/docker/model-cli/docs/reference/model_version.md
@@ -0,0 +1,8 @@
+# docker model version
+
+
+Show the Docker Model Runner version
+
+
+
+
diff --git a/_vendor/modules.txt b/_vendor/modules.txt
index 40a3c2f18774..4b008cfe474b 100644
--- a/_vendor/modules.txt
+++ b/_vendor/modules.txt
@@ -1,6 +1,7 @@
-# github.com/moby/moby v28.2.0+incompatible
+# github.com/moby/moby v28.2.1+incompatible
# github.com/moby/buildkit v0.22.0
# github.com/docker/buildx v0.24.0
-# github.com/docker/cli v28.2.0+incompatible
+# github.com/docker/cli v28.2.1+incompatible
# github.com/docker/compose/v2 v2.36.2
+# github.com/docker/model-cli v0.1.25
# github.com/docker/scout-cli v1.15.0
diff --git a/assets/css/components.css b/assets/css/components.css
index c77f6ec01a45..bfb1ef702cdb 100644
--- a/assets/css/components.css
+++ b/assets/css/components.css
@@ -94,6 +94,9 @@
@apply h-12 w-12 overflow-hidden;
}
}
+.button {
+ @apply mt-1 inline-block rounded-sm bg-blue-500 p-1 px-3 text-blue-50 text-white hover:bg-blue-600 dark:bg-blue-500 hover:dark:bg-blue-400;
+}
.summary-bar {
@apply my-1 mt-4 flex flex-col rounded-sm border-1 border-gray-100 bg-gray-50 p-4 dark:border-gray-800 dark:bg-gray-900;
diff --git a/assets/css/global.css b/assets/css/global.css
index e1d27a0b3227..bd7d62c1cbff 100644
--- a/assets/css/global.css
+++ b/assets/css/global.css
@@ -104,3 +104,6 @@ input[type="search"]::-ms-clear {
list-style-type: lower-roman;
}
}
+.navbar-group:first-of-type {
+ margin-top: 0.2rem !important;
+}
diff --git a/assets/css/utilities.css b/assets/css/utilities.css
index 5bd521f8f195..99471943da6d 100644
--- a/assets/css/utilities.css
+++ b/assets/css/utilities.css
@@ -118,9 +118,20 @@
}
}
+@utility navbar-entry-margin {
+ @apply px-2 py-1;
+}
+
+@utility navbar-group {
+ @apply mt-5;
+}
+
+@utility navbar-entry-background-current {
+ @apply bg-gray-100 dark:bg-gray-900;
+}
@utility navbar-group-font-title {
font-size: var(--color-navbar-group-font-title-size);
- @apply font-semibold uppercase;
+ @apply pb-1.5 font-semibold uppercase;
color: var(--color-navbar-text);
.dark & {
color: var(--color-navbar-text-dark);
@@ -240,3 +251,6 @@
}
}
}
+@utility chip {
+ @apply border-divider-light dark:border-divider-dark inline-flex items-center gap-1 rounded-full border bg-gray-100 px-2 text-sm text-gray-800 select-none dark:bg-gray-700 dark:text-gray-200;
+}
diff --git a/content/get-started/introduction/get-docker-desktop.md b/content/get-started/introduction/get-docker-desktop.md
index 7bb25be36e60..5b6ff9d5e088 100644
--- a/content/get-started/introduction/get-docker-desktop.md
+++ b/content/get-started/introduction/get-docker-desktop.md
@@ -26,6 +26,7 @@ This guide will walk you through the installation process, enabling you to exper
> Commercial use of Docker Desktop in larger enterprises (more than 250
> employees OR more than $10 million USD in annual revenue) requires a [paid subscription](https://www.docker.com/pricing/?_gl=1*1nyypal*_ga*MTYxMTUxMzkzOS4xNjgzNTM0MTcw*_ga_XJWPQMJYHQ*MTcxNjk4MzU4Mi4xMjE2LjEuMTcxNjk4MzkzNS4xNy4wLjA.).
+
{{< card
title="Docker Desktop for Mac"
description="[Download (Apple Silicon)](https://desktop.docker.com/mac/main/arm64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-arm64) | [Download (Intel)](https://desktop.docker.com/mac/main/amd64/Docker.dmg?utm_source=docker&utm_medium=webreferral&utm_campaign=docs-driven-download-mac-amd64) | [Install instructions](/desktop/setup/install/mac-install)"
@@ -40,7 +41,7 @@ This guide will walk you through the installation process, enabling you to exper
title="Docker Desktop for Linux"
description="[Install instructions](/desktop/setup/install/linux/)"
icon="/icons/Linux.svg" >}}
-
+
Once it's installed, complete the setup process and you're all set to run a Docker container.
diff --git a/content/get-started/resources.md b/content/get-started/resources.md
index 985458384d69..133d27ecbef7 100644
--- a/content/get-started/resources.md
+++ b/content/get-started/resources.md
@@ -9,7 +9,7 @@ Docker and the broader community of Docker experts have put together many differ
## Docker Training
-Expand your knowledge on all things Docker with [basic to advanced trainings from Docker experts](https://www.docker.com/resources/trainings/).
+Expand your knowledge on all things Docker with [basic to advanced trainings from Docker experts](https://www.docker.com/trainings/).
You can find recorded content at your own convenience, or register for a live session to participate in Q&A.
diff --git a/content/manuals/ai/model-runner.md b/content/manuals/ai/model-runner.md
index 7ef5f376793b..7f9a94b186c9 100644
--- a/content/manuals/ai/model-runner.md
+++ b/content/manuals/ai/model-runner.md
@@ -40,204 +40,11 @@ Models are pulled from Docker Hub the first time they're used and stored locally
4. Quit and reopen Docker Desktop to ensure the changes take effect.
5. Open the **Settings** view in Docker Desktop.
6. Navigate to **Features in development**.
-7. From the **Beta** tab, check the **Enable Docker Model Runner** setting.
+7. From the **Beta** tab, tick the **Enable Docker Model Runner** setting.
+8. If you are running on Windows with a supported NVIDIA GPU, you should also see and be able to tick the **Enable GPU-backed inference** setting.
You can now use the `docker model` command in the CLI and view and interact with your local models in the **Models** tab in the Docker Desktop Dashboard.
-### Enable DMR in Docker Engine
-
-1. Ensure you have installed [Docker Engine](/engine/install/).
-2. DMR is available as a package. To install it, run:
-
- ```console
- apt install docker-model-plugin
- ```
-
-## Available commands
-
-### Model runner status
-
-Check whether the Docker Model Runner is active and displays the current inference engine:
-
-```console
-$ docker model status
-```
-
-### View all commands
-
-Displays help information and a list of available subcommands.
-
-```console
-$ docker model help
-```
-
-Output:
-
-```text
-Usage: docker model COMMAND
-
-Commands:
- list List models available locally
- pull Download a model from Docker Hub
- rm Remove a downloaded model
- run Run a model interactively or with a prompt
- status Check if the model runner is running
- version Show the current version
-```
-
-### Pull a model
-
-Pulls a model from Docker Hub to your local environment.
-
-```console
-$ docker model pull
-```
-
-Example:
-
-```console
-$ docker model pull ai/smollm2
-```
-
-Output:
-
-```text
-Downloaded: 257.71 MB
-Model ai/smollm2 pulled successfully
-```
-
-The models also display in the Docker Desktop Dashboard.
-
-#### Pull from Hugging Face
-
-You can also pull GGUF models directly from [Hugging Face](https://huggingface.co/models?library=gguf).
-
-```console
-$ docker model pull hf.co/
-```
-
-For example:
-
-```console
-$ docker model pull hf.co/bartowski/Llama-3.2-1B-Instruct-GGUF
-```
-
-Pulls the [bartowski/Llama-3.2-1B-Instruct-GGUF](https://huggingface.co/bartowski/Llama-3.2-1B-Instruct-GGUF).
-
-### List available models
-
-Lists all models currently pulled to your local environment.
-
-```console
-$ docker model list
-```
-
-You will see something similar to:
-
-```text
-+MODEL PARAMETERS QUANTIZATION ARCHITECTURE MODEL ID CREATED SIZE
-+ai/smollm2 361.82 M IQ2_XXS/Q4_K_M llama 354bf30d0aa3 3 days ago 256.35 MiB
-```
-
-### Run a model
-
-Run a model and interact with it using a submitted prompt or in chat mode. When you run a model, Docker
-calls an Inference Server API endpoint hosted by the Model Runner through Docker Desktop. The model
-stays in memory until another model is requested, or until a pre-defined inactivity timeout is reached (currently 5 minutes).
-
-You do not have to use `Docker model run` before interacting with a specific model from a
-host process or from within a container. Model Runner transparently loads the requested model on-demand, assuming it has been
-pulled beforehand and is locally available.
-
-#### One-time prompt
-
-```console
-$ docker model run ai/smollm2 "Hi"
-```
-
-Output:
-
-```text
-Hello! How can I assist you today?
-```
-
-#### Interactive chat
-
-```console
-$ docker model run ai/smollm2
-```
-
-Output:
-
-```text
-Interactive chat mode started. Type '/bye' to exit.
-> Hi
-Hi there! It's SmolLM, AI assistant. How can I help you today?
-> /bye
-Chat session ended.
-```
-
-> [!TIP]
->
-> You can also use chat mode in the Docker Desktop Dashboard when you select the model in the **Models** tab.
-
-### Push a model to Docker Hub
-
-To push your model to Docker Hub:
-
-```console
-$ docker model push /
-```
-
-### Tag a model
-
-To specify a particular version or variant of the model:
-
-```console
-$ docker model tag
-```
-
-If no tag is provided, Docker defaults to `latest`.
-
-### View the logs
-
-Fetch logs from Docker Model Runner to monitor activity or debug issues.
-
-```console
-$ docker model logs
-```
-
-The following flags are accepted:
-
-- `-f`/`--follow`: View logs with real-time streaming
-- `--no-engines`: Exclude inference engine logs from the output
-
-### Remove a model
-
-Removes a downloaded model from your system.
-
-```console
-$ docker model rm
-```
-
-Output:
-
-```text
-Model removed successfully
-```
-
-### Package a model
-
-Packages a GGUF file into a Docker model OCI artifact, with optional licenses, and pushes it to the specified registry.
-
-```console
-$ docker model package \
- --gguf ./model.gguf \
- --licenses license1.txt \
- --licenses license2.txt \
- --push registry.example.com/ai/custom-model
-```
-
## Integrate the Docker Model Runner into your software development lifecycle
You can now start building your Generative AI application powered by the Docker Model Runner.
@@ -266,6 +73,10 @@ You can now interact with your own GenAI app, powered by a local model. Try a fe
All the available models are hosted in the [public Docker Hub namespace of `ai`](https://hub.docker.com/u/ai).
+### What CLI commands are available?
+
+See [the reference docs](/reference/cli/docker/model/).
+
### What API endpoints are available?
Once the feature is enabled, new API endpoints are available under the following base URLs:
@@ -332,6 +143,10 @@ To call the `chat/completions` OpenAI endpoint from the host via TCP:
1. Enable the host-side TCP support from the Docker Desktop GUI, or via the [Docker Desktop CLI](/manuals/desktop/features/desktop-cli.md).
For example: `docker desktop enable model-runner --tcp `.
+
+ If you are running on Windows, also enable GPU-backed inference.
+ See [Enable Docker Model Runner](#enable-dmr-in-docker-desktop).
+
2. Interact with it as documented in the previous section using `localhost` and the correct port.
```bash
diff --git a/content/manuals/engine/release-notes/28.md b/content/manuals/engine/release-notes/28.md
index 60cbd60e1318..866b86fbff52 100644
--- a/content/manuals/engine/release-notes/28.md
+++ b/content/manuals/engine/release-notes/28.md
@@ -23,6 +23,14 @@ For more information about:
- Deprecated and removed features, see [Deprecated Engine Features](../deprecated.md).
- Changes to the Engine API, see [Engine API version history](/reference/api/engine/version-history.md).
+## 28.2.1
+
+{{< release-date date="2025-05-29" >}}
+
+## Packaging updates
+
+- Fix packaging regression in [v28.2.0](https://github.com/moby/moby/releases/tag/v28.2.0) which broke creating the `docker` group/user on fresh installations. [docker-ce-packaging#1209](https://github.com/docker/docker-ce-packaging/issues/1209)
+
## 28.2.0
{{< release-date date="2025-05-28" >}}
@@ -74,7 +82,7 @@ For a full list of pull requests and changes in this release, refer to the relev
### Networking
-- Add bridge network option `"com.docker.network.bridge.trusted_host_interfaces"`, accepting a space-separated list of interface names. These interfaces have direct access to published ports on container IP addresses. [moby/moby#49832](https://github.com/moby/moby/pull/49832)
+- Add bridge network option `"com.docker.network.bridge.trusted_host_interfaces"`, accepting a colon-separated list of interface names. These interfaces have direct access to published ports on container IP addresses. [moby/moby#49832](https://github.com/moby/moby/pull/49832)
- Add daemon option `"allow-direct-routing"` to disable filtering of packets from outside the host addressed directly to containers. [moby/moby#49832](https://github.com/moby/moby/pull/49832)
- Do not display network options `com.docker.network.enable_ipv4` or `com.docker.network.enable_ipv6` in inspect output if they have been overridden by `EnableIPv4` or `EnableIPv6` in the network create request. [moby/moby#49866](https://github.com/moby/moby/pull/49866)
- Fix an issue that could cause network deletion to fail after a daemon restart, with error "has active endpoints" listing empty endpoint names. [moby/moby#49901](https://github.com/moby/moby/pull/49901)
diff --git a/content/manuals/security/_index.md b/content/manuals/security/_index.md
index dca9ab57f16c..755814c7e907 100644
--- a/content/manuals/security/_index.md
+++ b/content/manuals/security/_index.md
@@ -59,10 +59,6 @@ grid_admins:
description: Create organization access tokens as an alternative to a password.
link: /security/for-admins/access-tokens/
icon: password
-- title: Enforce sign-in
- description: Enforce your users to sign in to Docker Desktop.
- link: /security/for-admins/enforce-sign-in/
- icon: login
grid_developers:
- title: Set up two-factor authentication
description: Add an extra layer of authentication to your Docker account.
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 4c7ab56f2623..55b4c85fb59b 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
@@ -13,7 +13,7 @@ weight: 10
{{< summary-bar feature_name="Hardened Docker Desktop" >}}
Settings Management lets administrators configure and enforce Docker Desktop
-settings across ennd-user machines. It helps maintain consistent configurations
+settings across end-user machines. It helps maintain consistent configurations
and enhances security within your organization.
## Who is it for?
@@ -81,4 +81,4 @@ Desktop Linux VM.
## Learn more
-To see how each Docker Desktop setting maps across the Docker Dashboard, `admin-settings.json` file, and Admin Console, see the [Settings reference](settings-reference.md).
\ No newline at end of file
+To see how each Docker Desktop setting maps across the Docker Dashboard, `admin-settings.json` file, and Admin Console, see the [Settings reference](settings-reference.md).
diff --git a/content/manuals/security/for-admins/provisioning/scim.md b/content/manuals/security/for-admins/provisioning/scim.md
index 5914174c02e9..2d8c60714b5e 100644
--- a/content/manuals/security/for-admins/provisioning/scim.md
+++ b/content/manuals/security/for-admins/provisioning/scim.md
@@ -71,6 +71,13 @@ SCIM values.
> Alternatively, you can disable JIT provisioning to rely solely on SCIM.
For details, see [Just-in-Time](/manuals/security/for-admins/provisioning/just-in-time.md).
+## Prerequisites
+
+- You've [set up SSO](/manuals/security/for-admins/single-sign-on/_index.md)
+with Docker and verified your domain.
+- You have access to your identity provider's administrator portal with
+permission to create and manage applications.
+
## Enable SCIM in Docker
You must [configure SSO](../single-sign-on/configure/_index.md) before you enable SCIM. Enforcing SSO isn't required to use SCIM.
@@ -95,165 +102,245 @@ You must [configure SSO](../single-sign-on/configure/_index.md) before you enabl
The user interface for your IdP may differ slightly from the following steps. You can refer to the documentation for your IdP to verify. For additional details, see the documentation for your IdP:
- [Okta](https://help.okta.com/en-us/Content/Topics/Apps/Apps_App_Integration_Wizard_SCIM.htm)
-- [Entra ID (formerly Azure AD)](https://learn.microsoft.com/en-us/azure/active-directory/app-provisioning/user-provisioning)
+- [Entra ID/Azure AD SAML 2.0](https://learn.microsoft.com/en-us/azure/active-directory/app-provisioning/user-provisioning)
+
+> [!NOTE]
+>
+> Microsoft does not currently support SCIM and OIDC in the same non-gallery
+application in Entra ID. This guide provides a verified workaround using a
+separate non-gallery app for SCIM provisioning. While Microsoft does not
+officially document this setup, it is widely used and supported in practice.
{{< tabs >}}
{{< tab name="Okta" >}}
-### Enable SCIM
+### Step one: Enable SCIM
1. Sign in to Okta and select **Admin** to open the admin portal.
-2. Open the application you created when you configured your SSO connection.
-3. On the application page, select the **General** tab, then **Edit App Settings**.
-4. Enable SCIM provisioning, then select **Save**.
-5. Now you can access the **Provisioning** tab in Okta. Navigate to this tab, then select **Edit SCIM Connection**.
-6. To configure SCIM in Okta, set up your connection using the following values and settings:
+1. Open the application you created when you configured your SSO connection.
+1. On the application page, select the **General** tab, then **Edit App Settings**.
+1. Enable SCIM provisioning, then select **Save**.
+1. Now you can access the **Provisioning** tab in Okta. Navigate to this tab, then select **Edit SCIM Connection**.
+1. To configure SCIM in Okta, set up your connection using the following values and settings:
- SCIM Base URL: SCIM connector base URL (copied from Docker Hub)
- Unique identifier field for users: `email`
- Supported provisioning actions: **Push New Users** and **Push Profile Updates**
- Authentication Mode: HTTP Header
- SCIM Bearer Token: HTTP Header Authorization Bearer Token (copied from Docker Hub)
-7. Select **Test Connector Configuration**.
-8. Review the test results and select **Save**.
+1. Select **Test Connector Configuration**.
+1. Review the test results and select **Save**.
-### Enable synchronization
+### Step two: Enable synchronization
1. In Okta, select **Provisioning**.
-2. Select **To App**, then **Edit**.
-3. Enable **Create Users**, **Update User Attributes**, and **Deactivate Users**.
-4. Select **Save**.
-5. Remove unnecessary mappings. The necessary mappings are:
+1. Select **To App**, then **Edit**.
+1. Enable **Create Users**, **Update User Attributes**, and **Deactivate Users**.
+1. Select **Save**.
+1. Remove unnecessary mappings. The necessary mappings are:
- Username
- Given name
- Family name
- Email
{{< /tab >}}
-{{< tab name="Entra ID SAML 2.0" >}}
-
-1. In the Azure admin portal, go to **Enterprise Applications**, then select the **Docker** application you created when you set up your SSO connection.
-2. Select **Provisioning**, then **Get Started**.
-3. Select **Automatic** provisioning mode.
-4. Enter the **SCIM Base URL** and **API Token** from Docker into the **Admin Credentials** form.
-5. Test the connection, then select **Save**.
-6. Go to **Mappings**, then select **Provision Azure Active Directory Groups**.
-7. Set the **Enabled** value to **No**.
-8. Select **Provision Azure Active Directory Users**.
-9. Remove all unsupported attributes.
-10. Select **Save**.
-11. Set the provisioning status to **On**.
+{{< tab name="Entra ID (OIDC)" >}}
+
+Microsoft does not support SCIM and OIDC in the same non-gallery application.
+You must create a second non-gallery application in Entra ID for SCIM
+provisioning.
+
+### Step one: Create a separate SCIM app
+
+1. In the Azure Portal, go to **Microsoft Entra ID** > **Enterprise Applications** >
+**New application**.
+1. Select **Create your own application**.
+1. Name your application and choose **Integrate any other application you don't find in the gallery**.
+1. Select **Create**.
+
+### Step two: Configure SCIM provisioning
+
+1. In your new SCIM application, go to **Provisioning** > **Get started**.
+1. Set **Provisioning Mode** to **Automatic**.
+1. Under **Admin Credentials**:
+ - **Tenant URL**: Paste the **SCIM Base URL** from Docker.
+ - **Secret Token**: Paste the **SCIM API token** from Docker.
+1. Select **Test Connection** to verify.
+1. Select **Save** to store credentials.
+
+Next, [set up role mapping](#set-up-role-mapping).
+
+{{< /tab >}}
+{{< tab name="Entra ID (SAML 2.0)" >}}
+
+### Configure SCIM provisioning
+
+1. In the Azure Portal, go to **Microsoft Entra ID** > **Enterprise Applications**,
+and select your Docker SAML app.
+1. Select **Provisioning** > **Get started**.
+1. Set **Provisioning Mode** to **Automatic**.
+1. Under **Admin Credentials**:
+ - **Tenant URL**: Paste the **SCIM Base URL** from Docker.
+ - **Secret Token**: Paste the **SCIM API token** from Docker.
+1. Select **Test Connection** to verify.
+1. Select **Save** to store credentials.
+
+Next, [set up role mapping](#set-up-role-mapping).
{{< /tab >}}
{{< /tabs >}}
## Set up role mapping
-You can assign [roles](/security/for-admins/roles-and-permissions/) to members in your organization in your IdP. To set up a role, you can use optional user-level attributes for the person you want to assign a role. In addition to roles, you can set an organization or team to override the default provisioning values set by the SSO connection.
+You can assign [Docker roles](/security/for-admins/roles-and-permissions/) to
+users by adding optional SCIM attributes in your IdP. These attributes override
+default role and team values set in your SSO configuration.
> [!NOTE]
>
-> Role mappings are supported for both SCIM and JIT provisioning. With JIT provisioning, role mapping only applies when a user is initially provisioned to the organization.
+> Role mappings are supported for both SCIM and Just-in-Time (JIT)
+provisioning. For JIT, role mapping applies only when the user is first
+provisioned.
-The following table lists the supported optional user-level attributes.
+The following table lists the supported optional user-level attributes:
-| Attribute | Possible values | Considerations |
+| Attribute | Possible values | Notes |
| --------- | ------------------ | -------------- |
-| `dockerRole` | `member`, `editor`, or `owner`, for a list of permissions for each role, see [Roles and permissions](/security/for-admins/roles-and-permissions/) | If you don't assign a role in the IdP, the value of the `dockerRole` attribute defaults to `member`. When you set the attribute, this overrides the default value. |
-| `dockerOrg` | `organizationName`, for example, an organization named "moby" would be `moby` | Setting this attribute overrides the default organization configured by the SSO connection. Also, this won't add the user to the default team. If this attribute isn't set, the user is provisioned to the default organization and the default team. If set and `dockerTeam` is also set, this provisions the user to the team within that organization. |
-| `dockerTeam` | `teamName`, for example, a team named "developers" would be `developers` | Setting this attribute provisions the user to the default organization and to the specified team, instead of the SSO connection's default team. This also creates the team if it doesn't exist. You can still use group mapping to provision users to teams in multiple organizations. See [Group mapping](/security/for-admins/provisioning/group-mapping/) for more details. |
-
-After you set the role in the IdP, you must initiate a sync in your IdP to push the changes to Docker.
+| `dockerRole` | `member`, `editor`, or `owner` | If not set, the user defaults to the `member` role. Setting this attribute overrides the default.
For role definitions, see [Roles and permissions](manuals/security/for-admins/roles-and-permissions.md). |
+| `dockerOrg` | Docker `organizationName` (e.g., `moby`) | Overrides the default organization configured in your SSO connection.
If unset, the user is provisioned to the default organization. If `dockerOrg` and `dockerTeam` are both set, the user is provisioned to the team within the specified organization. |
+| `dockerTeam` | Docker `teamName` (e.g., `developers`) | Provisions the user to the specified team in the default or specified organization. If the team doesn't exist, it is automatically created.
You can still use [group mapping](/security/for-admins/provisioning/group-mapping/) to assign users to multiple teams across organizations. |
-The external namespace to use to set up these attributes is `urn:ietf:params:scim:schemas:extension:docker:2.0:User`.
+The external namespace used for these attributes is: `urn:ietf:params:scim:schemas:extension:docker:2.0:User`.
+This value is required in your IdP when creating custom SCIM attributes for Docker.
{{< tabs >}}
{{< tab name="Okta" >}}
-### Set up role mapping in Okta
+### Step one: Set up role mapping in Okta
1. Setup [SSO](../single-sign-on/configure/_index.md) and SCIM first.
-2. In the Okta admin portal, go to **Directory**, select **Profile Editor**, and then **User (Default)**.
-3. Select **Add Attribute** and configure the values for the role, organization, or team you want to add. Exact naming isn't required.
-4. Return to the **Profile Editor** and select your application.
-5. Select **Add Attribute** and enter the required values. The **External Name** and **External Namespace** must be exact. The external name values for organization/team/role mapping are `dockerOrg`, `dockerTeam`, and `dockerRole` respectively, as listed in the previous table. The external namespace is the same for all of them: `urn:ietf:params:scim:schemas:extension:docker:2.0:User`.
-6. After creating the attributes, navigate to the top of the page and select **Mappings**, then **Okta User to YOUR APP**.
-7. Go to the newly created attributes and map the variable names to the external names, then select **Save Mappings**. If you’re using JIT provisioning, continue to the following steps.
-8. Navigate to **Applications** and select **YOUR APP**.
-9. Select **General**, then **SAML Settings**, and **Edit**.
-10. Select **Step 2** and configure the mapping from the user attribute to the Docker variables.
+1. In the Okta admin portal, go to **Directory**, select **Profile Editor**, and then **User (Default)**.
+1. Select **Add Attribute** and configure the values for the role, organization, or team you want to add. Exact naming isn't required.
+1. Return to the **Profile Editor** and select your application.
+1. Select **Add Attribute** and enter the required values. The **External Name** and **External Namespace** must be exact. The external name values for organization/team/role mapping are `dockerOrg`, `dockerTeam`, and `dockerRole` respectively, as listed in the previous table. The external namespace is the same for all of them: `urn:ietf:params:scim:schemas:extension:docker:2.0:User`.
+1. After creating the attributes, navigate to the top of the page and select **Mappings**, then **Okta User to YOUR APP**.
+1. Go to the newly created attributes and map the variable names to the external names, then select **Save Mappings**. If you’re using JIT provisioning, continue to the following steps.
+1. Navigate to **Applications** and select **YOUR APP**.
+1. Select **General**, then **SAML Settings**, and **Edit**.
+1. Select **Step 2** and configure the mapping from the user attribute to the Docker variables.
-### Assign roles by user
+### Step two: Assign roles by user
-1. In the Okta admin portal, select **Directory**, then **People**.
-2. Select **Profile**, then **Edit**.
-3. Select **Attributes** and update the attributes to the desired values.
+1. In the Okta Admin portal, select **Directory**, then **People**.
+1. Select **Profile**, then **Edit**.
+1. Select **Attributes** and update the attributes to the desired values.
-### Assign roles by group
+### Step three: Assign roles by group
-1. In the Okta admin portal, select **Directory**, then **People**.
-2. Select **YOUR GROUP**, then **Applications**.
-3. Open **YOUR APPLICATION** and select the **Edit** icon.
-4. Update the attributes to the desired values.
+1. In the Okta Admin portal, select **Directory**, then **People**.
+1. Select **YOUR GROUP**, then **Applications**.
+1. Open **YOUR APPLICATION** and select the **Edit** icon.
+1. Update the attributes to the desired values.
If a user doesn't already have attributes set up, users who are added to the group will inherit these attributes upon provisioning.
{{< /tab >}}
-{{< tab name="Entra ID SAML 2.0" >}}
-
-### Set up role mapping in Azure AD
+{{< tab name="Entra ID/Azure AD (SAML 2.0 and OIDC)" >}}
+
+### Step one: Configure attribute mappings
+
+1. Complete the [SCIM provisioning setup](#enable-scim-in-docker).
+1. In the Azure Portal, open **Microsoft Entra ID** > **Enterprise Applications**,
+and select your SCIM application.
+1. Go to **Provisioning** > **Mappings** > **Provision Azure Active Directory Users**.
+1. Add or update the following mappings:
+ - `userPrincipalName` -> `userName`
+ - `mail` -> `emails.value`
+ - Optional. Map `dockerRole`, `dockerOrg`, or `dockerTeam` using one of the
+ [mapping methods](#choose-a-role-mapping-method).
+1. Remove any unsupported attributes to prevent sync errors.
+1. Optional. Go to **Mappings** > **Provision Azure Active Directory Groups**:
+ - If group provisioning causes errors, set **Enabled** to **No**.
+ - If enabling, test group mappings carefully.
+1. Select **Save** to apply mappings.
+
+### Step two: Choose a role mapping method
+
+You can map `dockerRole`, `dockerOrg`, or `dockerTeam` using one of the following
+methods:
+
+#### Expression mapping
+
+Use this method if you only need to assign Docker roles like `member`, `editor`,
+or `owner`.
+
+1. In the **Edit Attribute** view, set the mapping type to **Expression**.
+1. In the **Expression** field:
+ 1. If your App Roles match Docker roles exactly, use: SingleAppRoleAssignment([appRoleAssignments])
+ 1. If they don't match, use a switch expression: `Switch(SingleAppRoleAssignment([appRoleAssignments]), "My Corp Admins", "owner", "My Corp Editors", "editor", "My Corp Users", "member")`
+1. Set:
+ - **Target attribute**: `urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole`
+ - **Match objects using this attribute**: No
+ - **Apply this mapping**: Always
+1. Save your changes.
-1. Setup [SSO](../single-sign-on/configure/_index.md) and SCIM first.
-2. In the Azure AD admin portal, open **Enterprise Apps** and select **YOUR APP**.
-3. Select **Provisioning**, then **Mappings**, and **Provision Azure Active Directory Users**.
-4. To set up the new mapping, check **Show advanced options**, then select **Edit attribute options**.
-5. Create new entries with the desired mapping for role, organization, or group (for example, `urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole`) as a string type.
-6. Navigate back to **Attribute Mapping** for users and select **Add new mapping**.
+> [!WARNING]
+>
+> You can't use `dockerOrg` or `dockerTeam` with this method. Expression mapping
+is only compatible with one attribute.
-### Expression mapping
+#### Direct mapping
-This implementation works best for roles, but can't be used along with organization and team mapping using the same method. With this approach, you can assign attributes at a group level, which members can inherit. This is the recommended approach for role mapping.
+Use this method if you need to map multiple attributes (e.g., `dockerRole` +
+`dockerTeam`).
-1. In the **Edit Attribute** view, select the **Expression** mapping type.
-2. If you can create app roles named as the role directly (for example, `owner` or `editor`), in the **Expression** field, you can use `SingleAppRoleAssignment([appRoleAssignments])`.
+1. For each Docker attribute, choose a unique Entra extension attribute (e.g.,
+`extensionAttribute1`, `extensionAttribute2`, etc.).
+1. In the **Edit Attribute** view:
+ - Set mapping type to **Direct**.
+ - Set **Source attribute** to your selected extension attribute (e.g., `extensionAttribute1`).
+ - Set **Target attribute** to one of:
+ - `dockerRole: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole`
+ - `dockerOrg: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerOrg`
+ - `dockerTeam: urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerTeam`
+ - Set **Apply this mapping** to **Always**.
+1. Save your changes.
- Alternatively, if you’re restricted to using app roles you have already defined (for example, `My Corp Administrators`) you’ll need to setup a switch for these roles. For example:
+To assign values, you'll need to use the Microsoft Graph API.
- ```text
- Switch(SingleAppRoleAssignment([appRoleAssignments]), "member", "My Corp Administrator", "owner", "My Corp Editor", "editor")`
- ```
-3. Set the following fields:
- - **Target attribute**: `urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole`
- - **Match objects using this attribute**: No
- - **Apply this mapping**: Always
-4. Save your configuration.
+### Step three: Assign users and groups
-### Direct mapping
+For either mapping method:
-Direct mapping is an alternative to expression mapping. This implementation works for all three mapping types at the same time. In order to assign users, you'll need to use the Microsoft Graph API.
+1. In the SCIM app, go to **Users and Groups** > **Add user/group**.
+1. Select the users or groups to provision to Docker.
+1. Select **Assign**.
-1. In the **Edit Attribute** view, select the **Direct** mapping type.
-2. Set the following fields:
- - **Source attribute**: choose one of the allowed extension attributes in Entra (for example, `extensionAttribute1`)
- - **Target attribute**: `urn:ietf:params:scim:schemas:extension:docker:2.0:User:dockerRole`
- - **Match objects using this attribute**: No
- - **Apply this mapping**: Always
+If you're using expression mapping:
- If you're setting more than one attribute, for example role and organization, you need to choose a different extension attribute for each one.
-3. Save your configuration.
+1. Go to **App registrations** > your SCIM app > **App Roles**.
+1. Create App Roles that match Docker roles.
+1. Assign users or groups to App Roles under **Users and Groups**.
-### Assign users
+If you're using direct mapping:
-If you used expression mapping in the previous step, navigate to **App registrations**, select **YOUR APP**, and **App Roles**. Create an app role for each Docker role. If possible, create it with a display name that is directly equivalent to the role in Docker, for example, `owner` instead of `Owner`. If set up this way, then you can use expression mapping to `SingleAppRoleAssignment([appRoleAssignments])`. Otherwise, a custom switch will have to be used. See [Expression mapping](#expression-mapping).
+1. Go to [Microsoft Graph Explorer](https://developer.microsoft.com/en-us/graph/graph-explorer)
+and sign in as a tenant admin.
+1. Use Microsoft Graph API to assign attribute values. Example PATCH request:
-To add a user:
-1. Select **YOUR APP**, then **Users and groups**.
-2. Select **Add user/groups**, select the user you want to add, then **Select** their desired role.
+```bash
+PATCH https://graph.microsoft.com/v1.0/users/{user-id}
+Content-Type: application/json
-To add a group:
-1. Select **YOUR APP**, then **Users and groups**.
-2. Select **Add user/groups**, select the user you want to add, then **Select** their desired role.
+{
+ "extensionAttribute1": "owner",
+ "extensionAttribute2": "moby",
+ "extensionAttribute3": "developers"
+}
+```
-If you used direct mapping in the previous step, go to **Microsoft Graph Explorer** and sign in to your tenant. You need to be a tenant admin to use this feature. Use the Microsoft Graph API to assign the extension attribute to the user with the value that corresponds to what the attribute was mapped to. See the [Microsoft Graph API documentation](https://learn.microsoft.com/en-us/graph/extensibility-overview?tabs=http) on adding or updating data in extension attributes.
+> [!NOTE]
+>
+> You must use a different extension attribute for each SCIM field.
{{< /tab >}}
{{< /tabs >}}
@@ -261,7 +348,37 @@ If you used direct mapping in the previous step, go to **Microsoft Graph Explore
See the documentation for your IdP for additional details:
- [Okta](https://help.okta.com/en-us/Content/Topics/users-groups-profiles/usgp-add-custom-user-attributes.htm)
-- [Entra ID (formerly Azure AD)](https://learn.microsoft.com/en-us/azure/active-directory/app-provisioning/customize-application-attributes#provisioning-a-custom-extension-attribute-to-a-scim-compliant-application)
+- [Entra ID/Azure AD](https://learn.microsoft.com/en-us/azure/active-directory/app-provisioning/customize-application-attributes#provisioning-a-custom-extension-attribute-to-a-scim-compliant-application)
+
+## Test SCIM provisioning
+
+After completing role mapping, you can test the configuration manually.
+
+
+{{< tabs >}}
+{{< tab name="Okta" >}}
+
+1. In the Okta admin portal, go to **Directory > People**.
+1. Select a user you've assigned to your SCIM application.
+1. Select **Provision User**.
+1. Wait a few seconds, then check the Docker
+[Admin Console](https://app.docker.com/admin) under **Members**.
+1. If the user doesn’t appear, review logs in **Reports > System Log** and
+confirm SCIM settings in the app.
+
+{{< /tab >}}
+{{< tab name="Entra ID/Azure AD (OIDC and SAML 2.0)" >}}
+
+1. In the Azure Portal, go to **Microsoft Entra ID** > **Enterprise Applications**,
+and select your SCIM app.
+1. Go to **Provisioning** > **Provision on demand**.
+1. Select a user or group and choose **Provision**.
+1. Confirm that the user appears in the Docker
+[Admin Console](https://app.docker.com/admin) under **Members**.
+1. If needed, check **Provisioning logs** for errors.
+
+{{< /tab >}}
+{{< /tabs >}}
## Disable SCIM
@@ -288,5 +405,9 @@ The following videos demonstrate how to configure SCIM for your IdP:
- [Video: Configure SCIM with Okta](https://youtu.be/c56YECO4YP4?feature=shared&t=1314)
- [Video: Attribute mapping with Okta](https://youtu.be/c56YECO4YP4?feature=shared&t=1998)
-- [Video: Configure SCIM with Entra ID (Azure)](https://youtu.be/bGquA8qR9jU?feature=shared&t=1668)
-- [Video: Attribute and group mapping with Entra ID (Azure)](https://youtu.be/bGquA8qR9jU?feature=shared&t=2039)
+- [Video: Configure SCIM with Entra ID/Azure AD](https://youtu.be/bGquA8qR9jU?feature=shared&t=1668)
+- [Video: Attribute and group mapping with Entra ID/Azure AD](https://youtu.be/bGquA8qR9jU?feature=shared&t=2039)
+
+Refer to the following troubleshooting guide if needed:
+
+- [Troubleshoot provisioning](/manuals/security/troubleshoot/troubleshoot-provisioning.md)
diff --git a/content/manuals/security/troubleshoot/troubleshoot-provisioning.md b/content/manuals/security/troubleshoot/troubleshoot-provisioning.md
new file mode 100644
index 000000000000..f93723dc6eb7
--- /dev/null
+++ b/content/manuals/security/troubleshoot/troubleshoot-provisioning.md
@@ -0,0 +1,86 @@
+---
+description: Learn how to troubleshoot common user provisioning issues.
+keywords: scim, jit, provision, troubleshoot, group mapping
+title: Troubleshoot provisioning
+linkTitle: Troubleshoot provisioning
+tags: [Troubleshooting]
+toc_max: 2
+---
+
+If you experience issues with user roles, attributes, or unexpected account
+behavior with user provisioning, this guide provides troubleshooting
+recommendations to resolve conflicts.
+
+## SCIM attribute values are overwritten or ignored
+
+### Error message
+
+Typically, this scenario does not produce an error message in Docker or your
+IdP. This issue ususally surfaces as incorrect role or team assignment.
+
+### Possible causes
+
+- JIT provisioning is enabled, and Docker is using values from your IdP's
+SSO login flow to provision the user, which overrides
+SCIM-provided attributes.
+- SCIM was enabled after the user was already provisioned via JIT, so SCIM
+updates don't take effect.
+
+### Affected environments
+
+- Docker organizations using SCIM with SSO
+- Users provisioned via JIT prior to SCIM setup
+
+### Steps to replicate
+
+1. Enable JIT and SSO for your Docker organization.
+1. Sign in to Docker as a user via SSO.
+1. Enable SCIM and set role/team attributes for that user.
+1. SCIM attempts to update the user's attributes, but the role or team
+assignment does not reflect changes.
+
+### Solutions
+
+**Disable JIT provisioning (recommended)**
+
+1. Sign in to the Docker [Admin Console](app.docker.com/admin).
+1. Go to your organization's **Settings** > **Security** > **SSO and SCIM**.
+1. Find the relevant SSO connection.
+1. Select the **actions menu** and choose **Edit**.
+1. Disable **Just-in-Time provisioning**.
+1. Save your changes.
+
+With JIT disabled, Docker uses SCIM as the source of truth for user creation
+and role assignment.
+
+**Keep JIT enabled and mattch attributes**
+
+If you prefer to keep JIT enabled:
+
+- Make sure your IdP's SSO attribute mappings match the values being sent
+by SCIM.
+- Avoid configuring SCIM to override attributes already set via JIT.
+
+This option requires strict coordination between SSO and SCIM attributes
+in your IdP configuration.
+
+## SCIM updates don't apply to existing users
+
+### Possible causes
+
+User accounts were originally created manually or via JIT, and SCIM is not
+linked to manage them.
+
+### Solution
+
+SCIM only manages users that it provisions. To allow SCIM to manage an
+existing user:
+
+1. Remove the user manually from the Docker [Admin Console](app.docker.com/admin).
+1. Trigger provisioning from your IdP.
+1. SCIM will re-create the user with correct attributes.
+
+> [!WARNING]
+>
+> Deleting a user removes their resource ownership (e.g., repositories).
+Transfer ownership before removing the user.
\ No newline at end of file
diff --git a/content/reference/api/engine/_index.md b/content/reference/api/engine/_index.md
index 13ae6dbec608..21f9e79a9c77 100644
--- a/content/reference/api/engine/_index.md
+++ b/content/reference/api/engine/_index.md
@@ -73,21 +73,21 @@ To see the highest version of the API your Docker daemon and client support, use
```console
$ docker version
Client: Docker Engine - Community
- Version: 28.2.0
+ Version: 28.2.1
API version: 1.50
Go version: go1.24.3
Git commit: 879ac3f
- Built: Wed May 28 13:30:50 2025
+ Built: Wed May 28 19:24:55 2025
OS/Arch: linux/arm64
Context: default
Server: Docker Engine - Community
Engine:
- Version: 28.2.0
+ Version: 28.2.1
API version: 1.50 (minimum version 1.24)
Go version: go1.24.3
Git commit: 0e2cc22
- Built: Wed May 28 13:30:50 2025
+ Built: Wed May 28 19:24:55 2025
OS/Arch: linux/arm64
...
```
diff --git a/content/reference/cli/docker/model/_index.md b/content/reference/cli/docker/model/_index.md
new file mode 100644
index 000000000000..57b18999588a
--- /dev/null
+++ b/content/reference/cli/docker/model/_index.md
@@ -0,0 +1,14 @@
+---
+datafolder: model-cli
+datafile: docker_model
+title: docker model
+layout: cli
+---
+
+
diff --git a/content/reference/cli/docker/model/df.md b/content/reference/cli/docker/model/df.md
new file mode 100644
index 000000000000..98b15f3a52cc
--- /dev/null
+++ b/content/reference/cli/docker/model/df.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_df
+title: docker model df
+layout: cli
+aliases:
+- /engine/reference/commandline/model_df/
+---
+
+
diff --git a/content/reference/cli/docker/model/inspect.md b/content/reference/cli/docker/model/inspect.md
new file mode 100644
index 000000000000..f0b638f51894
--- /dev/null
+++ b/content/reference/cli/docker/model/inspect.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_inspect
+title: docker model inspect
+layout: cli
+aliases:
+- /engine/reference/commandline/model_inspect/
+---
+
+
diff --git a/content/reference/cli/docker/model/install-runner.md b/content/reference/cli/docker/model/install-runner.md
new file mode 100644
index 000000000000..56c44bf91ba5
--- /dev/null
+++ b/content/reference/cli/docker/model/install-runner.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_install-runner
+title: docker model install-runner
+layout: cli
+aliases:
+- /engine/reference/commandline/model_install-runner/
+---
+
+
diff --git a/content/reference/cli/docker/model/list.md b/content/reference/cli/docker/model/list.md
new file mode 100644
index 000000000000..3ad4facdbfee
--- /dev/null
+++ b/content/reference/cli/docker/model/list.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_list
+title: docker model list
+layout: cli
+aliases:
+- /engine/reference/commandline/model_list/
+---
+
+
diff --git a/content/reference/cli/docker/model/logs.md b/content/reference/cli/docker/model/logs.md
new file mode 100644
index 000000000000..6c684d1843f3
--- /dev/null
+++ b/content/reference/cli/docker/model/logs.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_logs
+title: docker model logs
+layout: cli
+aliases:
+- /engine/reference/commandline/model_logs/
+---
+
+
diff --git a/content/reference/cli/docker/model/package.md b/content/reference/cli/docker/model/package.md
new file mode 100644
index 000000000000..16015f63ef7a
--- /dev/null
+++ b/content/reference/cli/docker/model/package.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_package
+title: docker model package
+layout: cli
+aliases:
+- /engine/reference/commandline/model_package/
+---
+
+
diff --git a/content/reference/cli/docker/model/ps.md b/content/reference/cli/docker/model/ps.md
new file mode 100644
index 000000000000..3f02272249d0
--- /dev/null
+++ b/content/reference/cli/docker/model/ps.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_ps
+title: docker model ps
+layout: cli
+aliases:
+- /engine/reference/commandline/model_ps/
+---
+
+
diff --git a/content/reference/cli/docker/model/pull.md b/content/reference/cli/docker/model/pull.md
new file mode 100644
index 000000000000..e6db51a8c34f
--- /dev/null
+++ b/content/reference/cli/docker/model/pull.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_pull
+title: docker model pull
+layout: cli
+aliases:
+- /engine/reference/commandline/model_pull/
+---
+
+
diff --git a/content/reference/cli/docker/model/push.md b/content/reference/cli/docker/model/push.md
new file mode 100644
index 000000000000..d4ab1d7ed9df
--- /dev/null
+++ b/content/reference/cli/docker/model/push.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_push
+title: docker model push
+layout: cli
+aliases:
+- /engine/reference/commandline/model_push/
+---
+
+
diff --git a/content/reference/cli/docker/model/rm.md b/content/reference/cli/docker/model/rm.md
new file mode 100644
index 000000000000..4eaefd048f8b
--- /dev/null
+++ b/content/reference/cli/docker/model/rm.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_rm
+title: docker model rm
+layout: cli
+aliases:
+- /engine/reference/commandline/model_rm/
+---
+
+
diff --git a/content/reference/cli/docker/model/run.md b/content/reference/cli/docker/model/run.md
new file mode 100644
index 000000000000..83c820f4283b
--- /dev/null
+++ b/content/reference/cli/docker/model/run.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_run
+title: docker model run
+layout: cli
+aliases:
+- /engine/reference/commandline/model_run/
+---
+
+
diff --git a/content/reference/cli/docker/model/status.md b/content/reference/cli/docker/model/status.md
new file mode 100644
index 000000000000..5ce4d3cd52a1
--- /dev/null
+++ b/content/reference/cli/docker/model/status.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_status
+title: docker model status
+layout: cli
+aliases:
+- /engine/reference/commandline/model_status/
+---
+
+
diff --git a/content/reference/cli/docker/model/tag.md b/content/reference/cli/docker/model/tag.md
new file mode 100644
index 000000000000..dd9ce9320b60
--- /dev/null
+++ b/content/reference/cli/docker/model/tag.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_tag
+title: docker model tag
+layout: cli
+aliases:
+- /engine/reference/commandline/model_tag/
+---
+
+
diff --git a/content/reference/cli/docker/model/uninstall-runner.md b/content/reference/cli/docker/model/uninstall-runner.md
new file mode 100644
index 000000000000..349541cd6f90
--- /dev/null
+++ b/content/reference/cli/docker/model/uninstall-runner.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_uninstall-runner
+title: docker model uninstall-runner
+layout: cli
+aliases:
+- /engine/reference/commandline/model_uninstall-runner/
+---
+
+
diff --git a/content/reference/cli/docker/model/unload.md b/content/reference/cli/docker/model/unload.md
new file mode 100644
index 000000000000..b6e914b2a685
--- /dev/null
+++ b/content/reference/cli/docker/model/unload.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_unload
+title: docker model unload
+layout: cli
+aliases:
+- /engine/reference/commandline/model_unload/
+---
+
+
diff --git a/content/reference/cli/docker/model/version.md b/content/reference/cli/docker/model/version.md
new file mode 100644
index 000000000000..82f8cf035484
--- /dev/null
+++ b/content/reference/cli/docker/model/version.md
@@ -0,0 +1,16 @@
+---
+datafolder: model-cli
+datafile: docker_model_version
+title: docker model version
+layout: cli
+aliases:
+- /engine/reference/commandline/model_version/
+---
+
+
diff --git a/go.mod b/go.mod
index 3b39905bcde0..cc9debacf28d 100644
--- a/go.mod
+++ b/go.mod
@@ -4,18 +4,20 @@ go 1.24.0
require (
github.com/docker/buildx v0.24.0 // indirect
- github.com/docker/cli v28.2.0+incompatible // indirect
+ github.com/docker/cli v28.2.1+incompatible // indirect
github.com/docker/compose/v2 v2.36.2 // indirect
+ github.com/docker/model-cli v0.1.25 // indirect
github.com/docker/scout-cli v1.15.0 // indirect
github.com/moby/buildkit v0.22.0 // indirect
- github.com/moby/moby v28.2.0+incompatible // indirect
+ github.com/moby/moby v28.2.1+incompatible // indirect
)
replace (
github.com/docker/buildx => github.com/docker/buildx v0.24.0
- github.com/docker/cli => github.com/docker/cli v28.2.0+incompatible
+ github.com/docker/cli => github.com/docker/cli v28.2.1+incompatible
github.com/docker/compose/v2 => github.com/docker/compose/v2 v2.36.2
+ github.com/docker/model-cli => github.com/docker/model-cli v0.1.26-0.20250527144806-15d0078a3c01
github.com/docker/scout-cli => github.com/docker/scout-cli v1.15.0
github.com/moby/buildkit => github.com/moby/buildkit v0.22.0
- github.com/moby/moby => github.com/moby/moby v28.2.0+incompatible
+ github.com/moby/moby => github.com/moby/moby v28.2.1+incompatible
)
diff --git a/go.sum b/go.sum
index cda9b06768f4..1a625b3ee45d 100644
--- a/go.sum
+++ b/go.sum
@@ -1,9 +1,15 @@
+github.com/ArthurFlag/model-cli v0.0.0-20250516101226-5b9cc2a0d4e0 h1:MorqPrU3OQSTJpMiTPI6wlbIYyTgRQnaC9zw4fqDe/A=
+github.com/ArthurFlag/model-cli v0.0.0-20250516101226-5b9cc2a0d4e0/go.mod h1:0CRZM7BMEwLD9btoek+YN2n2f/D7idhNLi/2o/LtKwg=
+github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c h1:udKWzYgxTojEKWjV8V+WSxDXJ4NFATAsZjh8iIbsQIg=
+github.com/Azure/go-ansiterm v0.0.0-20250102033503-faa5f7b0171c/go.mod h1:xomTg63KZ2rFqZQzSB4Vz2SUXa1BpHTVz9L5PTmPC4E=
github.com/Azure/go-autorest v14.2.0+incompatible/go.mod h1:r+4oMnoxhatjLLJ6zxSWATqVooLgysK6ZNox3g/xq24=
github.com/Azure/go-autorest/autorest/adal v0.9.5/go.mod h1:B7KF7jKIeC9Mct5spmyCB/A8CG/sEz1vwIRGv/bbw7A=
github.com/Azure/go-autorest/autorest/date v0.3.0/go.mod h1:BI0uouVdmngYNUzGWeSYnokU+TrmwEsOqdt8Y6sso74=
github.com/Azure/go-autorest/logger v0.2.0/go.mod h1:T9E3cAhj2VqvPOtCYAvby9aBXkZmbF5NWuPV8+WeEW8=
github.com/Azure/go-autorest/tracing v0.6.0/go.mod h1:+vhtPC754Xsa23ID7GlGsrdKBpUA79WCAKPPZVC2DeU=
github.com/BurntSushi/toml v0.3.1/go.mod h1:xHWCNGjB5oqiDr8zfno3MHue2Ht5sIBksp03qcyfWMU=
+github.com/Microsoft/go-winio v0.6.2 h1:F2VQgta7ecxGYO8k3ZZz3RS8fVIXVxONVUPlNERoyfY=
+github.com/Microsoft/go-winio v0.6.2/go.mod h1:yd8OoFMLzJbo9gZq8j5qaps8bJ9aShtEA8Ipt1oGCvU=
github.com/PuerkitoBio/purell v1.1.1/go.mod h1:c11w/QuzBsJSee3cPx9rAFu61PvFxuPbtSwDGJws/X0=
github.com/PuerkitoBio/urlesc v0.0.0-20170810143723-de5bf2ad4578/go.mod h1:uGdkoq3SwY9Y+13GIhn11/XLaGBb4BfwItxLd5jeuXE=
github.com/agl/ed25519 v0.0.0-20170116200512-5312a6153412/go.mod h1:WPjqKcmVOxf0XSf3YxCJs6N6AOSrOx3obionmG7T0y0=
@@ -13,6 +19,8 @@ github.com/beorn7/perks v1.0.1/go.mod h1:G2ZrVWU2WbWT9wwq4/hrbKbnv/1ERSJQ0ibhJ6r
github.com/bugsnag/bugsnag-go v1.4.1/go.mod h1:2oa8nejYd4cQ/b0hMIopN0lCRxU0bueqREvZLWFrtK8=
github.com/bugsnag/panicwrap v1.2.0/go.mod h1:D/8v3kj0zr8ZAKg1AQ6crr+5VwKN5eIywRkfhyM/+dE=
github.com/cenkalti/backoff v2.1.1+incompatible/go.mod h1:90ReRw6GdpyfrHakVjL/QHaoyV4aDUVVkXQJJJ3NXXM=
+github.com/cenkalti/backoff/v4 v4.3.0 h1:MyRJ/UdXutAwSAT+s3wNd7MfTIcy71VQueUuFK343L8=
+github.com/cenkalti/backoff/v4 v4.3.0/go.mod h1:Y3VNntkOUPxTVeUxJ/G5vcM//AlwfmyYozVcomhLiZE=
github.com/cloudflare/cfssl v0.0.0-20181213083726-b94e044bb51e/go.mod h1:yMWuSON2oQp+43nFtAV/uvKQIFpSPerB57DCt9t8sSA=
github.com/compose-spec/compose-spec v0.0.0-20230623140450-d63a678732a3 h1:YbpEs/CNAGa/2lsASxr2XAcOMQBeMVd6uQLLZxUD4Dc=
github.com/compose-spec/compose-spec v0.0.0-20230623140450-d63a678732a3/go.mod h1:SkxF2HOKkzpp+mNdvGONzi3g2shI/M94GkMgsE0JLuk=
@@ -35,6 +43,11 @@ github.com/compose-spec/compose-spec v0.0.0-20230927132538-f223c5150d5d/go.mod h
github.com/compose-spec/compose-spec v0.0.0-20231121152139-478928e7c9f8 h1:WQU6c3MGdIxVcDRC+Qstk9bJuYvHLvbyfkN8fStL1Qk=
github.com/compose-spec/compose-spec v0.0.0-20231121152139-478928e7c9f8/go.mod h1:SkxF2HOKkzpp+mNdvGONzi3g2shI/M94GkMgsE0JLuk=
github.com/containerd/fuse-overlayfs-snapshotter v1.0.2/go.mod h1:nRZceC8a7dRm3Ao6cJAwuJWPFiBPaibHiFntRUnzhwU=
+github.com/containerd/stargz-snapshotter v0.16.3 h1:zbQMm8dRuPHEOD4OqAYGajJJUwCeUzt4j7w9Iaw58u4=
+github.com/containerd/stargz-snapshotter/estargz v0.16.3 h1:7evrXtoh1mSbGj/pfRccTampEyKpjpOnS3CyiV1Ebr8=
+github.com/containerd/stargz-snapshotter/estargz v0.16.3/go.mod h1:uyr4BfYfOj3G9WBVE8cOlQmXAbPN9VEQpBBeJIuOipU=
+github.com/cpuguy83/go-md2man/v2 v2.0.6/go.mod h1:oOW0eioCTA6cOiMLiUPZOpcVxMig6NIQQ7OS05n1F4g=
+github.com/davecgh/go-spew v1.1.0/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/davecgh/go-spew v1.1.1/go.mod h1:J7Y8YcW2NihsgmVo/mv3lAwl/skON4iLHjSsI+c5H38=
github.com/distribution/distribution v2.8.2+incompatible h1:k9+4DKdOG+quPFZXT/mUsiQrGu9vYCp+dXpuPkuqhk8=
github.com/distribution/distribution v2.8.2+incompatible/go.mod h1:EgLm2NgWtdKgzF9NpMzUKgzmR7AMmb0VQi2B+ZzDRjc=
@@ -44,6 +57,8 @@ github.com/distribution/distribution v2.8.4-0.20231004140828-d607c6ccb937+incomp
github.com/distribution/distribution v2.8.4-0.20231004140828-d607c6ccb937+incompatible/go.mod h1:EgLm2NgWtdKgzF9NpMzUKgzmR7AMmb0VQi2B+ZzDRjc=
github.com/distribution/reference v0.5.0 h1:/FUIFXtfc/x2gpa5/VGfiGLuOIdYa1t65IKK2OFGvA0=
github.com/distribution/reference v0.5.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
+github.com/distribution/reference v0.6.0 h1:0IXCQ5g4/QMHHkarYzh5l+u8T3t73zM5QvfrDyIgxBk=
+github.com/distribution/reference v0.6.0/go.mod h1:BbU0aIcezP1/5jX/8MP0YiH4SdvB5Y4f/wlDRiLyi3E=
github.com/docker/buildx v0.11.0 h1:DNCOIYT/7J0sPBlU/ozEhFd4MtbnbFByn45yeTMHXVU=
github.com/docker/buildx v0.11.0/go.mod h1:Yq7ZNjrwXKzW0uSFMk46dl5Gl903k5+bp6U4apsM5rs=
github.com/docker/buildx v0.11.1 h1:xfmrAkOJrN+NLRcwhZn1iBgJVAK1dEBEv8lWu1Wxg14=
@@ -172,6 +187,8 @@ github.com/docker/cli v28.1.0-rc.2+incompatible h1:BDhiR2nacubawpKAWFLqZmjGkARWP
github.com/docker/cli v28.1.0-rc.2+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/cli v28.2.0+incompatible h1:Tnor4OXVIBBPlTegk65OAL+TVlG1pQxsrTw08X8w9ao=
github.com/docker/cli v28.2.0+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
+github.com/docker/cli v28.2.1+incompatible h1:AYyTcuwvhl9dXdyCiXlOGXiIqSNYzTmaDNpxIISPGsM=
+github.com/docker/cli v28.2.1+incompatible/go.mod h1:JLrzqnKDaYBop7H2jaqPtU4hHvMKP+vjCwu2uszcLI8=
github.com/docker/compose-cli v1.0.35 h1:uZyEHLalfqBS2PiTpA1LAULyJmuQ+YtZg7nG4Xl3/Cc=
github.com/docker/compose-cli v1.0.35/go.mod h1:mSXI4hFLpRU3EtI8NTo32bNwI0UXSr8jnq+/rYjGAUU=
github.com/docker/compose/v2 v2.22.0 h1:3rRz4L7tPU75wRsV8JZh2/aTgerQvPa1cpzZN+tHqUY=
@@ -246,11 +263,28 @@ github.com/docker/compose/v2 v2.36.2/go.mod h1:mZygkne+MAMu/e1B28PBFmG0Z0WefbxZ/
github.com/docker/distribution v2.8.2+incompatible h1:T3de5rq0dB1j30rp0sA2rER+m322EBzniBPB6ZIzuh8=
github.com/docker/distribution v2.8.2+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
github.com/docker/distribution v2.8.3+incompatible h1:AtKxIZ36LoNK51+Z6RpzLpddBirtxJnzDrHLEKxTAYk=
+github.com/docker/distribution v2.8.3+incompatible/go.mod h1:J2gT2udsDAN96Uj4KfcMRqY0/ypR+oyYUYmja8H+y+w=
+github.com/docker/docker v28.1.1+incompatible h1:49M11BFLsVO1gxY9UX9p/zwkE/rswggs8AdFmXQw51I=
+github.com/docker/docker v28.1.1+incompatible/go.mod h1:eEKB0N0r5NX/I1kEveEz05bcu8tLC/8azJZsviup8Sk=
+github.com/docker/docker-credential-helpers v0.9.3 h1:gAm/VtF9wgqJMoxzT3Gj5p4AqIjCBS4wrsOh9yRqcz8=
+github.com/docker/docker-credential-helpers v0.9.3/go.mod h1:x+4Gbw9aGmChi3qTLZj8Dfn0TD20M/fuWy0E5+WDeCo=
github.com/docker/go v1.5.1-1.0.20160303222718-d30aec9fd63c/go.mod h1:CADgU4DSXK5QUlFslkQu2yW2TKzFZcXq/leZfM0UH5Q=
github.com/docker/go-connections v0.4.0/go.mod h1:Gbd7IOopHjR8Iph03tsViu4nIes5XhDvyHbTtUxmeec=
+github.com/docker/go-connections v0.5.0 h1:USnMq7hx7gwdVZq1L49hLXaFtUdTADjXGp+uj1Br63c=
+github.com/docker/go-connections v0.5.0/go.mod h1:ov60Kzw0kKElRwhNs9UlUHAE/F9Fe6GLaXnqyDdmEXc=
github.com/docker/go-events v0.0.0-20190806004212-e31b211e4f1c/go.mod h1:Uw6UezgYA44ePAFQYUehOuCzmy5zmg/+nl2ZfMWGkpA=
github.com/docker/go-metrics v0.0.1/go.mod h1:cG1hvH2utMXtqgqqYE9plW6lDxS3/5ayHzueweSI3Vw=
+github.com/docker/go-units v0.5.0 h1:69rxXcBk27SvSaaxTtLh/8llcHD8vYHT7WSdRZ/jvr4=
+github.com/docker/go-units v0.5.0/go.mod h1:fgPhTUdO+D/Jk86RDLlptpiXQzgHJF7gydDDbaIK4Dk=
github.com/docker/libtrust v0.0.0-20150526203908-9cbd2a1374f4/go.mod h1:cyGadeNEkKy96OOhEzfZl+yxihPEzKnqJwvfuSUqbZE=
+github.com/docker/model-cli v0.1.25-0.20250521141517-0ef53e8909a1 h1:NRn6pmK6gG+VzpxvdJ5YHbcQpC4/c39U+QO2Dcek0C0=
+github.com/docker/model-cli v0.1.25-0.20250521141517-0ef53e8909a1/go.mod h1:1YlKTiA19vEhbmM8EiJVPUFvRifBBI1S3sBpOt6Gbl4=
+github.com/docker/model-cli v0.1.26-0.20250527144806-15d0078a3c01 h1:UL/07fs6IEdRWWkK+GRvmSTZM+9fugWzEeo2vdGIPoE=
+github.com/docker/model-cli v0.1.26-0.20250527144806-15d0078a3c01/go.mod h1:1YlKTiA19vEhbmM8EiJVPUFvRifBBI1S3sBpOt6Gbl4=
+github.com/docker/model-distribution v0.0.0-20250512190053-b3792c042d57 h1:ZqfKknb+0/uJid8XLFwSl/osjE+WuS6o6I3dh3ZqO4U=
+github.com/docker/model-distribution v0.0.0-20250512190053-b3792c042d57/go.mod h1:dThpO9JoG5Px3i+rTluAeZcqLGw8C0qepuEL4gL2o/c=
+github.com/docker/model-runner v0.0.0-20250512190413-96af7b750f88 h1:NkiizYL67HsCnnlEU6BQVoeiC1bAAyJFxw02bO7JC4E=
+github.com/docker/model-runner v0.0.0-20250512190413-96af7b750f88/go.mod h1:Nw+rx6RRPNdProEb9/BVJyAQn63px6WWlOv+eEpkV7Q=
github.com/docker/scout-cli v0.16.1 h1:kIcWkaA+cEwnC0nIjNlc8dnlXbV4D8Vyu3yrRUPB9xs=
github.com/docker/scout-cli v0.16.1/go.mod h1:Eo1RyCJsx3ldz/YTY5yGxu9g9mwTYbRUutxQUkow3Fc=
github.com/docker/scout-cli v0.16.2-0.20230623100159-43178dbabf53 h1:FA7tj4Bnu+jFJdwB5D6CCGTYvLfNkjGqjvvZmg3fcLc=
@@ -300,24 +334,62 @@ github.com/docker/scout-cli v1.15.0/go.mod h1:Eo1RyCJsx3ldz/YTY5yGxu9g9mwTYbRUut
github.com/elazarl/goproxy v0.0.0-20191011121108-aa519ddbe484/go.mod h1:Ro8st/ElPeALwNFlcTpWmkr6IoMFfkjXAvTHpevnDsM=
github.com/evanphx/json-patch v4.9.0+incompatible/go.mod h1:50XU6AFN0ol/bzJsmQLiYLvXMP4fmwYFNcr97nuDLSk=
github.com/fatih/color v1.7.0/go.mod h1:Zm6kSWBoL9eyXnKyktHP6abPY2pDugNf5KwzbycvMj4=
+github.com/felixge/httpsnoop v1.0.4 h1:NFTV2Zj1bL4mc9sqWACXbQFVBBg2W3GPvqp8/ESS2Wg=
+github.com/felixge/httpsnoop v1.0.4/go.mod h1:m8KPJKqk1gH5J9DgRY2ASl2lWCfGKXixSwevea8zH2U=
github.com/form3tech-oss/jwt-go v3.2.2+incompatible/go.mod h1:pbq4aXjuKjdthFRnoDwaVPLA+WlJuPGy+QneDUgJi2k=
+github.com/fsnotify/fsnotify v1.4.9/go.mod h1:znqG4EE+3YCdAaPaxE2ZRY/06pZUdp0tY4IgpuI1SZQ=
+github.com/fsnotify/fsnotify v1.7.0 h1:8JEhPFa5W2WU7YfeZzPNqzMP6Lwt7L2715Ggo0nosvA=
+github.com/fsnotify/fsnotify v1.7.0/go.mod h1:40Bi/Hjc2AVfZrqy+aj+yEI+/bRxZnMJyTJwOpGvigM=
github.com/fvbommel/sortorder v1.0.1/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
+github.com/fvbommel/sortorder v1.1.0 h1:fUmoe+HLsBTctBDoaBwpQo5N+nrCp8g/BjKb/6ZQmYw=
+github.com/fvbommel/sortorder v1.1.0/go.mod h1:uk88iVf1ovNn1iLfgUVU2F9o5eO30ui720w+kxuqRs0=
+github.com/go-logr/logr v1.2.2/go.mod h1:jdQByPbusPIv2/zmleS9BjJVeZ6kBagPoEUsqbVz/1A=
+github.com/go-logr/logr v1.4.2 h1:6pFjapn8bFcIbiKo3XT4j/BhANplGihG6tvd+8rYgrY=
+github.com/go-logr/logr v1.4.2/go.mod h1:9T104GzyrTigFIr8wt5mBrctHMim0Nb2HLGrmQ40KvY=
+github.com/go-logr/stdr v1.2.2 h1:hSWxHoqTgW2S2qGc0LTAI563KZ5YKYRhT3MFKZMbjag=
+github.com/go-logr/stdr v1.2.2/go.mod h1:mMo/vtBO5dYbehREoey6XUKy/eSumjCCveDpRre4VKE=
+github.com/gogo/protobuf v1.3.2 h1:Ov1cvc58UF3b5XjBnZv7+opcTcQFZebYjWzi34vdm4Q=
github.com/gogo/protobuf v1.3.2/go.mod h1:P1XiOD3dCwIKUDQYPy72D8LYyHL2YPYrpS2s69NZV8Q=
github.com/google/btree v1.0.0/go.mod h1:lNA+9X1NB3Zf8V7Ke586lFgjr2dZNuvo3lPJSGZ5JPQ=
+github.com/google/go-containerregistry v0.20.3 h1:oNx7IdTI936V8CQRveCjaxOiegWwvM7kqkbXTpyiovI=
+github.com/google/go-containerregistry v0.20.3/go.mod h1:w00pIgBRDVUDFM6bq+Qx8lwNWK+cxgCuX1vd3PIBDNI=
+github.com/google/gofuzz v1.0.0/go.mod h1:dBl0BpW6vV/+mYPU4Po3pmUjxk6FQPldtuIdl/M65Eg=
github.com/google/shlex v0.0.0-20191202100458-e7afc7fbc510/go.mod h1:pupxD2MaaD3pAXIBCelhxNneeOaAeabZDe5s4K6zSpQ=
+github.com/google/uuid v1.6.0 h1:NIvaJDMOsjHA8n1jAhLSgzrAzy1Hgr+hNrb57e+94F0=
+github.com/google/uuid v1.6.0/go.mod h1:TIyPZe4MgqvfeYDBFedMoGGpEw/LqOeaOT+nhxU+yHo=
github.com/googleapis/gnostic v0.4.1/go.mod h1:LRhVm6pbyptWbWbuZ38d1eyptfvIytN3ir6b65WBswg=
github.com/gorilla/mux v1.8.0/go.mod h1:DVbg23sWSpFRCP0SfiEN6jmj59UnW/n46BH5rLB71So=
+github.com/gpustack/gguf-parser-go v0.14.1 h1:tmz2eTnSEFfE52V10FESqo9oAUquZ6JKQFntWC/wrEg=
+github.com/gpustack/gguf-parser-go v0.14.1/go.mod h1:GvHh1Kvvq5ojCOsJ5UpwiJJmIjFw3Qk5cW7R+CZ3IJo=
github.com/gregjones/httpcache v0.0.0-20180305231024-9cad4c3443a7/go.mod h1:FecbI9+v66THATjSRHfNgh1IVFe/9kFxbXtjV0ctIMA=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1 h1:VNqngBF40hVlDloBruUehVYC3ArSgIyScOAyMRqBxRg=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.25.1/go.mod h1:RBRO7fro65R6tjKzYgLAFo0t1QEXY1Dp+i/bvpRiqiQ=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1 h1:e9Rjr40Z98/clHv5Yg79Is0NtosR5LXRvdr7o/6NwbA=
+github.com/grpc-ecosystem/grpc-gateway/v2 v2.26.1/go.mod h1:tIxuGz/9mpox++sgp9fJjHO0+q1X9/UOWd798aAm22M=
github.com/grpc-ecosystem/grpc-opentracing v0.0.0-20180507213350-8e809c8a8645/go.mod h1:6iZfnjpejD4L/4DwD7NryNaJyCQdzwWwH2MWhCA90Kw=
github.com/hailocab/go-hostpool v0.0.0-20160125115350-e80d13ce29ed/go.mod h1:tMWxXQ9wFIaZeTI9F+hmhFiGpFmhOHzyShyFUhRm0H4=
github.com/hashicorp/go-cleanhttp v0.5.1/go.mod h1:JpRdi6/HCYpAwUzNwuwqhbovhLtngrth3wmdIIUrZ80=
github.com/hashicorp/go-cty-funcs v0.0.0-20200930094925-2721b1e36840/go.mod h1:Abjk0jbRkDaNCzsRhOv2iDCofYpX1eVsjozoiK63qLA=
github.com/hashicorp/hcl/v2 v2.8.2/go.mod h1:bQTN5mpo+jewjJgh8jr0JUguIi7qPHUF6yIfAEN3jqY=
+github.com/henvic/httpretty v0.1.4 h1:Jo7uwIRWVFxkqOnErcoYfH90o3ddQyVrSANeS4cxYmU=
+github.com/henvic/httpretty v0.1.4/go.mod h1:Dn60sQTZfbt2dYsdUSNsCljyF4AfdqnuJFDLJA1I4AM=
+github.com/inconshreveable/mousetrap v1.1.0 h1:wN+x4NVGpMsO7ErUn/mUI3vEoE6Jt13X2s0bqwp9tc8=
+github.com/inconshreveable/mousetrap v1.1.0/go.mod h1:vpF70FUmC8bwa3OWnCshd2FqLfsEA9PFc4w1p2J65bw=
github.com/jaguilar/vt100 v0.0.0-20150826170717-2703a27b14ea/go.mod h1:QMdK4dGB3YhEW2BmA1wgGpPYI3HZy/5gD705PXKUVSg=
github.com/jinzhu/gorm v1.9.2/go.mod h1:Vla75njaFJ8clLU1W44h34PjIkijhjHIYnZxMqCdxqo=
github.com/jinzhu/inflection v0.0.0-20180308033659-04140366298a/go.mod h1:h+uFLlag+Qp1Va5pdKtLDYj+kHp5pxUVkryuEj+Srlc=
+github.com/json-iterator/go v1.1.12 h1:PV8peI4a0ysnczrg+LtxykD8LfKY9ML6u2jnxaEnrnM=
+github.com/json-iterator/go v1.1.12/go.mod h1:e30LSqwooZae/UwlEbR2852Gd8hjQvJoHmT4TnhNGBo=
github.com/kardianos/osext v0.0.0-20190222173326-2bc1f35cddc0/go.mod h1:1NbS8ALrpOvjt0rHPNLyCIeMtbizbir8U//inJ+zuB8=
+github.com/kisielk/errcheck v1.5.0/go.mod h1:pFxgyoBC7bSaBwPgfKdkLd5X25qrDl4LWUI2bnpBCr8=
+github.com/kisielk/gotool v1.0.0/go.mod h1:XhKaO+MFFWcvkIS/tQcRk01m1F5IRFswLeQ+oQHNcck=
+github.com/klauspost/compress v1.18.0 h1:c/Cqfb0r+Yi+JtIEq73FWXVkRonBlf0CRNYc8Zttxdo=
+github.com/klauspost/compress v1.18.0/go.mod h1:2Pp+KzxcywXVXMr50+X0Q/Lsb43OQHYWRCY2AiWywWQ=
github.com/lib/pq v1.10.0/go.mod h1:AlVN5x4E4T544tWzH6hKfbfQvm3HdbOxrmggDNAPY9o=
+github.com/mattn/go-runewidth v0.0.9/go.mod h1:H031xJmbD/WCDINGzjvQ9THkh0rPKHF+m2gUSrubnMI=
+github.com/mattn/go-runewidth v0.0.16 h1:E5ScNMtiwvlvB5paMFdw9p4kSQzbXFikJ5SQO6TULQc=
+github.com/mattn/go-runewidth v0.0.16/go.mod h1:Jdepj2loyihRzMpdS35Xk/zdY8IAYHsh153qUoGf23w=
+github.com/mitchellh/go-homedir v1.1.0 h1:lukF9ziXFxDFPkA1vsr5zpc1XuPDn/wFntq5mG+4E0Y=
github.com/mitchellh/go-homedir v1.1.0/go.mod h1:SfyaCUpYCn1Vlf4IUYiD9fPX4A5wJrkLzIz1N1q0pr0=
github.com/moby/buildkit v0.11.6 h1:VYNdoKk5TVxN7k4RvZgdeM4GOyRvIi4Z8MXOY7xvyUs=
github.com/moby/buildkit v0.11.6/go.mod h1:GCqKfHhz+pddzfgaR7WmHVEE3nKKZMMDPpK8mh3ZLv4=
@@ -385,6 +457,8 @@ github.com/moby/buildkit v0.22.0-rc1 h1:Q47jZZws7+0WhucTcm35NRV8NcO6n1SwIikzfqcG
github.com/moby/buildkit v0.22.0-rc1/go.mod h1:j4pP5hxiTWcz7xuTK2cyxQislHl/N2WWHzOy43DlLJw=
github.com/moby/buildkit v0.22.0 h1:aWN06w1YGSVN1XfeZbj2ZbgY+zi5xDAjEFI8Cy9fTjA=
github.com/moby/buildkit v0.22.0/go.mod h1:j4pP5hxiTWcz7xuTK2cyxQislHl/N2WWHzOy43DlLJw=
+github.com/moby/docker-image-spec v1.3.1 h1:jMKff3w6PgbfSa69GfNg+zN/XLhfXJGnEx3Nl2EsFP0=
+github.com/moby/docker-image-spec v1.3.1/go.mod h1:eKmb5VW8vQEh/BAr2yvVNvuiJuY6UIocYsFu/DxxRpo=
github.com/moby/locker v1.0.1/go.mod h1:S7SDdo5zpBK84bzzVlKr2V0hz+7x9hWbYC/kq7oQppc=
github.com/moby/moby v24.0.2+incompatible h1:yH+5dRHH1x3XRKzl1THA2aGTy6CHYnkt5N924ADMax8=
github.com/moby/moby v24.0.2+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc=
@@ -434,10 +508,27 @@ github.com/moby/moby v28.1.0-rc.2+incompatible h1:F9Ku4A7eCFvb9cYR/jk7sLC6U9+r2u
github.com/moby/moby v28.1.0-rc.2+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc=
github.com/moby/moby v28.2.0+incompatible h1:TtiT7qCEOZWnP0+GKsRUPUN3GPvSUt4/0oLOc2trQdk=
github.com/moby/moby v28.2.0+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc=
+github.com/moby/moby v28.2.1+incompatible h1:UYmHExYP8S0uGKDozhYw7RJ+LpANL51g4fa3qT0Q2GA=+
+github.com/moby/moby v28.2.1+incompatible/go.mod h1:fDXVQ6+S340veQPv35CzDahGBmHsiclFwfEygB/TWMc=
+github.com/moby/sys/atomicwriter v0.1.0 h1:kw5D/EqkBwsBFi0ss9v1VG3wIkVhzGvLklJ+w3A14Sw=
+github.com/moby/sys/atomicwriter v0.1.0/go.mod h1:Ul8oqv2ZMNHOceF643P6FKPXeCmYtlQMvpizfsSoaWs=
+github.com/moby/sys/sequential v0.6.0 h1:qrx7XFUd/5DxtqcoH1h438hF5TmOvzC/lspjy7zgvCU=
+github.com/moby/sys/sequential v0.6.0/go.mod h1:uyv8EUTrca5PnDsdMGXhZe6CCe8U/UiTWd+lL+7b/Ko=
github.com/moby/sys/symlink v0.1.0/go.mod h1:GGDODQmbFOjFsXvfLVn3+ZRxkch54RkSiGqsZeMYowQ=
+github.com/moby/term v0.5.2 h1:6qk3FJAFDs6i/q3W/pQ97SX192qKfZgGjCQqfCJkgzQ=
+github.com/moby/term v0.5.2/go.mod h1:d3djjFCrjnB+fl8NJux+EJzu0msscUP+f8it8hPkFLc=
+github.com/modern-go/concurrent v0.0.0-20180228061459-e0a39a4cb421/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd h1:TRLaZ9cD/w8PVh93nsPXa1VrQ6jlwL5oN8l14QlcNfg=
github.com/modern-go/concurrent v0.0.0-20180306012644-bacd9c7ef1dd/go.mod h1:6dJC0mAP4ikYIbvyc7fijjWJddQyLn8Ig3JB5CqoB9Q=
+github.com/modern-go/reflect2 v1.0.2 h1:xBagoLtFs94CBntxluKeaWgTMpvLxC4ur3nMaC9Gz0M=
+github.com/modern-go/reflect2 v1.0.2/go.mod h1:yWuevngMOJpCy52FWWMvUC8ws7m/LJsjYzDa0/r8luk=
+github.com/morikuni/aec v1.0.0 h1:nP9CBfwrvYnBRgY6qfDQkygYDmYwOilePFkwzv4dU8A=
github.com/morikuni/aec v1.0.0/go.mod h1:BbKIizmSmc5MMPqRYbxO4ZU0S0+P200+tUnFx7PXmsc=
github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822/go.mod h1:+n7T8mK8HuQTcFwEeznm/DIxMOiR9yIdICNftLE1DvQ=
+github.com/nxadm/tail v1.4.8 h1:nPr65rt6Y5JFSKQO7qToXr7pePgD6Gwiw05lkbyAQTE=
+github.com/nxadm/tail v1.4.8/go.mod h1:+ncqLTQzXmGhMZNUePPaPqPvBxHAIsmXswZKocGu+AU=
+github.com/olekukonko/tablewriter v0.0.5 h1:P2Ga83D34wi1o9J6Wh1mRuqd4mF/x/lgBS7N7AbDhec=
+github.com/olekukonko/tablewriter v0.0.5/go.mod h1:hPp6KlRPjbx+hW8ykQs1w3UBbZlj6HuIJcUGPhkA7kY=
github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8Oi/yOhh5U=
github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM=
github.com/opencontainers/image-spec v1.1.0-rc3 h1:fzg1mXZFj8YdPeNkRXMg+zb88BFV0Ys52cJydRwBkb8=
@@ -448,19 +539,138 @@ github.com/opencontainers/image-spec v1.1.0-rc5 h1:Ygwkfw9bpDvs+c9E34SdgGOj41dX/
github.com/opencontainers/image-spec v1.1.0-rc5/go.mod h1:X4pATf0uXsnn3g5aiGIsVnJBR4mxhKzfwmvK/B2NTm8=
github.com/opencontainers/image-spec v1.1.0-rc6 h1:XDqvyKsJEbRtATzkgItUqBA7QHk58yxX1Ov9HERHNqU=
github.com/opencontainers/image-spec v1.1.0 h1:8SG7/vwALn54lVB/0yZ/MMwhFrPYtpEHQb2IpWsCzug=
+github.com/opencontainers/image-spec v1.1.1 h1:y0fUlFfIZhPF1W537XOLg0/fcx6zcHCJwooC2xJA040=
+github.com/opencontainers/image-spec v1.1.1/go.mod h1:qpqAh3Dmcf36wStyyWU+kCeDgrGnAve2nCC8+7h8Q0M=
github.com/opentracing/opentracing-go v1.2.0/go.mod h1:GxEUsuufX4nBwe+T+Wl9TAgYrxe9dPLANfrWvHYVTgc=
github.com/peterbourgon/diskv v2.0.1+incompatible/go.mod h1:uqqh8zWWbv1HBMNONnaR/tNboyR3/BZd58JJSHlUSCU=
+github.com/pkg/errors v0.9.1 h1:FEBLx1zS214owpjy7qsBeixbURkuhQAwrK5UwLGTwt4=
github.com/pkg/errors v0.9.1/go.mod h1:bwawxfHBFNV+L2hUp1rHADufV3IMtnDRdf1r5NINEl0=
github.com/pkg/profile v1.5.0/go.mod h1:qBsxPvzyUincmltOk6iyRVxHYg4adc0OFOv72ZdLa18=
github.com/pmezard/go-difflib v1.0.0/go.mod h1:iKH77koFhYxTK1pcRnkKkqfTogsbg7gZNVY4sRDYZ/4=
+github.com/rivo/uniseg v0.2.0/go.mod h1:J6wj4VEh+S6ZtnVlnTBMWIodfgj8LQOQFoIToxlJtxc=
+github.com/rivo/uniseg v0.4.7 h1:WUdvkW8uEhrYfLC4ZzdpI2ztxP1I582+49Oc5Mq64VQ=
+github.com/rivo/uniseg v0.4.7/go.mod h1:FN3SvrM+Zdj16jyLfmOkMNblXMcoc8DfTHruCPUcx88=
+github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529 h1:18kd+8ZUlt/ARXhljq+14TwAoKa61q6dX8jtwOf6DH8=
+github.com/rs/dnscache v0.0.0-20230804202142-fc85eb664529/go.mod h1:qe5TWALJ8/a1Lqznoc5BDHpYX/8HU60Hm2AwRmqzxqA=
+github.com/russross/blackfriday/v2 v2.1.0/go.mod h1:+Rmxgy9KzJVeS9/2gXHxylqXiyQDYRxCVz55jmeOWTM=
github.com/serialx/hashring v0.0.0-20190422032157-8b2912629002/go.mod h1:/yeG0My1xr/u+HZrFQ1tOQQQQrOawfyMUH13ai5brBc=
+github.com/sirupsen/logrus v1.9.3 h1:dueUQJ1C2q9oE3F7wvmSGAaVtTmUizReu6fjN8uqzbQ=
+github.com/sirupsen/logrus v1.9.3/go.mod h1:naHLuLoDiP4jHNo9R0sCBMtWGeIprob74mVsIT4qYEQ=
+github.com/smallnest/ringbuffer v0.0.0-20241116012123-461381446e3d h1:3VwvTjiRPA7cqtgOWddEL+JrcijMlXUmj99c/6YyZoY=
+github.com/smallnest/ringbuffer v0.0.0-20241116012123-461381446e3d/go.mod h1:tAG61zBM1DYRaGIPloumExGvScf08oHuo0kFoOqdbT0=
+github.com/spf13/cobra v1.9.1 h1:CXSaggrXdbHK9CF+8ywj8Amf7PBRmPCOJugH954Nnlo=
+github.com/spf13/cobra v1.9.1/go.mod h1:nDyEzZ8ogv936Cinf6g1RU9MRY64Ir93oCnqb9wxYW0=
github.com/spf13/pflag v1.0.5/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/spf13/pflag v1.0.6 h1:jFzHGLGAlb3ruxLB8MhbI6A8+AQX/2eW4qeyNZXNp2o=
+github.com/spf13/pflag v1.0.6/go.mod h1:McXfInJRrz4CZXVZOBLb0bTZqETkiAhM9Iw0y3An2Bg=
+github.com/stretchr/objx v0.1.0/go.mod h1:HFkY916IF+rwdDfMAkV7OtwuqBVzrE8GR6GFx+wExME=
+github.com/stretchr/testify v1.3.0/go.mod h1:M5WIy9Dh21IEIfnGCwXGc5bZfKNJtfHm1UVUgZn+9EI=
+github.com/stretchr/testify v1.7.0/go.mod h1:6Fq8oRcR53rry900zMqJjRRixrwX3KX962/h/Wwjteg=
github.com/theupdateframework/notary v0.6.1/go.mod h1:MOfgIfmox8s7/7fduvB2xyPPMJCrjRLRizA8OFwpnKY=
github.com/tonistiigi/units v0.0.0-20180711220420-6950e57a87ea/go.mod h1:WPnis/6cRcDZSUvVmezrxJPkiO87ThFYsoUiMwWNDJk=
+github.com/vbatts/tar-split v0.12.1 h1:CqKoORW7BUWBe7UL/iqTVvkTBOF8UvOMKOIZykxnnbo=
+github.com/vbatts/tar-split v0.12.1/go.mod h1:eF6B6i6ftWQcDqEn3/iGFRFRo8cBIMSJVOpnNdfTMFA=
github.com/xeipuuv/gojsonreference v0.0.0-20180127040603-bd5ef7bd5415/go.mod h1:GwrjFmJcFw6At/Gs6z4yjiIwzuJ1/+UwLxMQDVQXShQ=
github.com/xeipuuv/gojsonschema v1.2.0/go.mod h1:anYRn/JVcOK2ZgGU+IjEV4nwlhoK5sQluxsYJ78Id3Y=
+github.com/yuin/goldmark v1.1.27/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+github.com/yuin/goldmark v1.2.1/go.mod h1:3hX8gzYuyVAZsxl0MRgGTJEmQBFcNTphYh9decYSb74=
+go.opentelemetry.io/auto/sdk v1.1.0 h1:cH53jehLUN6UFLY71z+NDOiNJqDdPRaXzTel0sJySYA=
+go.opentelemetry.io/auto/sdk v1.1.0/go.mod h1:3wSPjt5PWp2RhlCcmmOial7AvC4DQqZb7a7wCow3W8A=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0 h1:CV7UdSGJt/Ao6Gp4CXckLxVRRsRgDHoI8XjbL3PDl8s=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.59.0/go.mod h1:FRmFuRJfag1IZ2dPkHnEoSFVgTVPUd2qf5Vi69hLb8I=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0 h1:sbiXRNDSWJOTobXh5HyQKjq6wUC5tNybqjIqDpAY4CU=
+go.opentelemetry.io/contrib/instrumentation/net/http/otelhttp v0.60.0/go.mod h1:69uWxva0WgAA/4bu2Yy70SLDBwZXuQ6PbBpbsa5iZrQ=
+go.opentelemetry.io/otel v1.35.0 h1:xKWKPxrxB6OtMCbmMY021CqC45J+3Onta9MqjhnusiQ=
+go.opentelemetry.io/otel v1.35.0/go.mod h1:UEqy8Zp11hpkUrL73gSlELM0DupHoiq72dR+Zqel/+Y=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.34.0 h1:ajl4QczuJVA2TU9W9AGw++86Xga/RKt//16z/yxPgdk=
+go.opentelemetry.io/otel/exporters/otlp/otlpmetric/otlpmetricgrpc v1.34.0/go.mod h1:Vn3/rlOJ3ntf/Q3zAI0V5lDnTbHGaUsNUeF6nZmm7pA=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0 h1:OeNbIYk/2C15ckl7glBlOBp5+WlYsOElzTNmiPW/x60=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.34.0/go.mod h1:7Bept48yIeqxP2OZ9/AqIpYS94h2or0aB4FypJTc8ZM=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0 h1:1fTNlAIJZGWLP5FVu0fikVry1IsiUnXjf7QFvoNN3Xw=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace v1.35.0/go.mod h1:zjPK58DtkqQFn+YUMbx0M2XV3QgKU0gS9LeGohREyK4=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0 h1:FFeLy03iVTXP6ffeN2iXrxfGsZGCjVx0/4KlizjyBwU=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.31.0/go.mod h1:TMu73/k1CP8nBUpDLc71Wj/Kf7ZS9FK5b53VapRsP9o=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0 h1:m639+BofXTvcY1q8CGs4ItwQarYtJPOWmVobfM1HpVI=
+go.opentelemetry.io/otel/exporters/otlp/otlptrace/otlptracegrpc v1.35.0/go.mod h1:LjReUci/F4BUyv+y4dwnq3h/26iNOeC3wAIqgvTIZVo=
+go.opentelemetry.io/otel/metric v1.35.0 h1:0znxYu2SNyuMSQT4Y9WDWej0VpcsxkuklLa4/siN90M=
+go.opentelemetry.io/otel/metric v1.35.0/go.mod h1:nKVFgxBZ2fReX6IlyW28MgZojkoAkJGaE8CpgeAU3oE=
+go.opentelemetry.io/otel/sdk v1.34.0 h1:95zS4k/2GOy069d321O8jWgYsW3MzVV+KuSPKp7Wr1A=
+go.opentelemetry.io/otel/sdk v1.34.0/go.mod h1:0e/pNiaMAqaykJGKbi+tSjWfNNHMTxoC9qANsCzbyxU=
+go.opentelemetry.io/otel/sdk v1.35.0 h1:iPctf8iprVySXSKJffSS79eOjl9pvxV9ZqOWT0QejKY=
+go.opentelemetry.io/otel/sdk v1.35.0/go.mod h1:+ga1bZliga3DxJ3CQGg3updiaAJoNECOgJREo9KHGQg=
+go.opentelemetry.io/otel/sdk/metric v1.34.0 h1:5CeK9ujjbFVL5c1PhLuStg1wxA7vQv7ce1EK0Gyvahk=
+go.opentelemetry.io/otel/sdk/metric v1.34.0/go.mod h1:jQ/r8Ze28zRKoNRdkjCZxfs6YvBTG1+YIqyFVFYec5w=
+go.opentelemetry.io/otel/sdk/metric v1.35.0 h1:1RriWBmCKgkeHEhM7a2uMjMUfP7MsOF5JpUCaEqEI9o=
+go.opentelemetry.io/otel/sdk/metric v1.35.0/go.mod h1:is6XYCUMpcKi+ZsOvfluY5YstFnhW0BidkR+gL+qN+w=
+go.opentelemetry.io/otel/trace v1.35.0 h1:dPpEfJu1sDIqruz7BHFG3c7528f6ddfSWfFDVt/xgMs=
+go.opentelemetry.io/otel/trace v1.35.0/go.mod h1:WUk7DtFp1Aw2MkvqGdwiXYDZZNvA/1J8o6xRXLrIkyc=
+go.opentelemetry.io/proto/otlp v1.5.0 h1:xJvq7gMzB31/d406fB8U5CBdyQGw4P399D1aQWU/3i4=
+go.opentelemetry.io/proto/otlp v1.5.0/go.mod h1:keN8WnHxOy8PG0rQZjJJ5A2ebUoafqWp0eVQ4yIXvJ4=
+golang.org/x/crypto v0.0.0-20190308221718-c2843e01d9a2/go.mod h1:djNgcEr1/C05ACkg1iLfiJU5Ep61QUkGW8qpdssI0+w=
+golang.org/x/crypto v0.0.0-20191011191535-87dc89f01550/go.mod h1:yigFU9vqHzYiE8UmvKecakEJjdnWj3jj499lnFckfCI=
+golang.org/x/crypto v0.0.0-20200622213623-75b288015ac9/go.mod h1:LzIPMQfyMNhhGPhUkYOs5KpL4U8rLKemX1yGLhDgUto=
+golang.org/x/crypto v0.37.0 h1:kJNSjF/Xp7kU0iB2Z+9viTPMW4EqqsrywMXLJOOsXSE=
+golang.org/x/crypto v0.37.0/go.mod h1:vg+k43peMZ0pUMhYmVAWysMK35e6ioLh3wB8ZCAfbVc=
+golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0 h1:R84qjqJb5nVJMxqWYb3np9L5ZsaDtB+a39EqjV0JSUM=
+golang.org/x/exp v0.0.0-20250408133849-7e4ce0ab07d0/go.mod h1:S9Xr4PYopiDyqSyp5NjCrhFrqg6A5zA2E/iPHPhqnS8=
+golang.org/x/mod v0.2.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.3.0/go.mod h1:s0Qsj1ACt9ePp/hMypM3fl4fZqREWJwdYDEqhRiZZUA=
+golang.org/x/mod v0.24.0 h1:ZfthKaKaT4NrhGVZHO1/WDTwGES4De8KtWO0SIbNJMU=
+golang.org/x/mod v0.24.0/go.mod h1:IXM97Txy2VM4PJ3gI61r1YEk/gAj6zAHN3AdZt6S9Ww=
+golang.org/x/net v0.0.0-20190404232315-eb5bcb51f2a3/go.mod h1:t9HGtf8HONx5eT2rtn7q6eTqICYqUVnKs3thJo3Qplg=
+golang.org/x/net v0.0.0-20190620200207-3b0461eec859/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20200226121028-0de0cce0169b/go.mod h1:z5CRVTTTmAJ677TzLLGU+0bjPO0LkuOLi4/5GtJWs/s=
+golang.org/x/net v0.0.0-20201021035429-f5854403a974/go.mod h1:sp8m0HH+o8qH0wwXwYZr8TS3Oi6o0r6Gce1SSxlDquU=
+golang.org/x/net v0.39.0 h1:ZCu7HMWDxpXpaiKdhzIfaltL9Lp31x/3fCP11bc6/fY=
+golang.org/x/net v0.39.0/go.mod h1:X7NRbYVEA+ewNkCNyJ513WmMdQ3BineSwVtN2zD/d+E=
+golang.org/x/sync v0.0.0-20190423024810-112230192c58/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20190911185100-cd5d95a43a6e/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.0.0-20201020160332-67f06af15bc9/go.mod h1:RxMgew5VJxzue5/jJTE5uejpjVlOe/izrB70Jof72aM=
+golang.org/x/sync v0.14.0 h1:woo0S4Yywslg6hp4eUFjTVOyKt0RookbpAHG4c1HmhQ=
+golang.org/x/sync v0.14.0/go.mod h1:1dzgHSNfp02xaA81J2MS99Qcpr2w7fw1gpm99rleRqA=
+golang.org/x/sys v0.0.0-20190215142949-d0b11bdaac8a/go.mod h1:STP8DvDyc/dI5b8T5hshtkjS+E42TnysNCUPdjciGhY=
+golang.org/x/sys v0.0.0-20190412213103-97732733099d/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20191005200804-aed5e4c7ecf9/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20200930185726-fdedc70b468f/go.mod h1:h1NjWce9XRLGQEsW7wpKNCjG9DtNlClVuFLEZdDNbEs=
+golang.org/x/sys v0.0.0-20210616094352-59db8d763f22/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg=
+golang.org/x/sys v0.33.0 h1:q3i8TbbEz+JRD9ywIRlyRAQbM0qF7hu24q3teo2hbuw=
+golang.org/x/sys v0.33.0/go.mod h1:BJP2sWEmIv4KK5OTEluFJCKSidICx8ciO85XgH3Ak8k=
+golang.org/x/text v0.3.0/go.mod h1:NqM8EUOU14njkJ3fqMW+pc6Ldnwhi/IjpwHt7yyuwOQ=
+golang.org/x/text v0.3.3/go.mod h1:5Zoc/QRtKVWzQhOtBMvqHzDpF6irO9z98xDceosuGiQ=
+golang.org/x/text v0.24.0 h1:dd5Bzh4yt5KYA8f9CJHCP4FB4D51c2c6JvN37xJJkJ0=
+golang.org/x/text v0.24.0/go.mod h1:L8rBsPeo2pSS+xqN0d5u2ikmjtmoJbDBT1b7nHvFCdU=
+golang.org/x/tools v0.0.0-20180917221912-90fa682c2a6e/go.mod h1:n7NCudcB/nEzxVGmLbDWY5pfWTLqBcC2KZ6jyYvM4mQ=
+golang.org/x/tools v0.0.0-20191119224855-298f0cb1881e/go.mod h1:b+2E5dAYhXwXZwtnZ6UAqBI28+e2cm9otk0dWdXHAEo=
+golang.org/x/tools v0.0.0-20200619180055-7c47624df98f/go.mod h1:EkVYQZoAsY45+roYkvgYkIh4xh/qjgUK9TdY2XT94GE=
+golang.org/x/tools v0.0.0-20210106214847-113979e3529a/go.mod h1:emZCQorbCU4vsT4fOWvOPXz4eW1wZW4PmDk9uLelYpA=
+golang.org/x/tools v0.32.0 h1:Q7N1vhpkQv7ybVzLFtTjvQya2ewbwNDZzUgfXGqtMWU=
+golang.org/x/tools v0.32.0/go.mod h1:ZxrU41P/wAbZD8EDa6dDCa6XfpkhJ7HFMjHJXfBDu8s=
+golang.org/x/xerrors v0.0.0-20190717185122-a985d3407aa7/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191011141410-1b5146add898/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20191204190536-9bdfabe68543/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+golang.org/x/xerrors v0.0.0-20200804184101-5ec99f83aff1/go.mod h1:I/5z698sn9Ka8TeJc9MKroUUfqBBauWjQqLJ2OPfmY0=
+gonum.org/v1/gonum v0.15.1 h1:FNy7N6OUZVUaWG9pTiD+jlhdQ3lMP+/LcTpJ6+a8sQ0=
+gonum.org/v1/gonum v0.15.1/go.mod h1:eZTZuRFrzu5pcyjN5wJhcIhnUdNijYxX1T2IcrOGY0o=
+google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2 h1:35ZFtrCgaAjF7AFAK0+lRSf+4AyYnWRbH7og13p7rZ4=
+google.golang.org/genproto/googleapis/api v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:W9ynFDP/shebLB1Hl/ESTOap2jHd6pmLXPNZC7SVDbA=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250219182151-9fdb1cabc7b2 h1:DMTIbak9GhdaSxEjvVzAeNZvyc03I61duqNbnm3SU0M=
+google.golang.org/genproto/googleapis/rpc v0.0.0-20250219182151-9fdb1cabc7b2/go.mod h1:LuRYeWDFV6WOn90g357N17oMCaxpgCnbi/44qJvDn2I=
+google.golang.org/grpc v1.72.0 h1:S7UkcVa60b5AAQTaO6ZKamFp1zMZSU0fGDK2WZLbBnM=
+google.golang.org/grpc v1.72.0/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
+google.golang.org/grpc v1.72.1 h1:HR03wO6eyZ7lknl75XlxABNVLLFc2PAb6mHlYh756mA=
+google.golang.org/grpc v1.72.1/go.mod h1:wH5Aktxcg25y1I3w7H69nHfXdOG3UiadoBtjh3izSDM=
+google.golang.org/protobuf v1.36.5 h1:tPhr+woSbjfYvY6/GPufUoYizxw1cF/yFoxJ2fmpwlM=
+google.golang.org/protobuf v1.36.5/go.mod h1:9fA7Ob0pmnwhb644+1+CVWFRbNajQ6iRojtC/QF5bRE=
+google.golang.org/protobuf v1.36.6 h1:z1NpPI8ku2WgiWnf+t9wTPsn6eP1L7ksHUlkfLvd9xY=
+google.golang.org/protobuf v1.36.6/go.mod h1:jduwjTPXsFjZGTmRluh+L6NjiWu7pchiJ2/5YcXBHnY=
+gopkg.in/check.v1 v0.0.0-20161208181325-20d25e280405/go.mod h1:Co6ibVJAznAaIkqp8huTwlJQCZ016jof/cbN4VW5Yz0=
gopkg.in/dancannon/gorethink.v3 v3.0.5/go.mod h1:GXsi1e3N2OcKhcP6nsYABTiUejbWMFO4GY5a4pEaeEc=
gopkg.in/fatih/pool.v2 v2.0.0/go.mod h1:8xVGeu1/2jr2wm5V9SPuMht2H5AEmf5aFMGSQixtjTY=
gopkg.in/gorethink/gorethink.v3 v3.0.5/go.mod h1:+3yIIHJUGMBK+wyPH+iN5TP+88ikFDfZdqTlK3Y9q8I=
gopkg.in/inf.v0 v0.9.1/go.mod h1:cWUDdTG/fYaXco+Dcufb5Vnc6Gp2YChqWtbxRZE0mXw=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7 h1:uRGJdciOHaEIrze2W8Q3AKkepLTh2hOroT7a+7czfdQ=
+gopkg.in/tomb.v1 v1.0.0-20141024135613-dd632973f1e7/go.mod h1:dt/ZhP58zS4L8KSrWDmTeBkI65Dw0HsyUHuEVlX15mw=
gopkg.in/yaml.v2 v2.4.0/go.mod h1:RDklbk79AGWmwhnvt/jBztapEOGDOx6ZbXqjP6csGnQ=
+gopkg.in/yaml.v3 v3.0.0-20200313102051-9f266ea9e77c/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
+gopkg.in/yaml.v3 v3.0.1/go.mod h1:K4uyk7z7BCEPqu6E+C64Yfv1cQ7kz7rIZviUmN+EgEM=
diff --git a/hugo.yaml b/hugo.yaml
index 6dbad3b505e8..f941ce9390a0 100644
--- a/hugo.yaml
+++ b/hugo.yaml
@@ -135,10 +135,10 @@ params:
# Latest version of the Docker Engine API
latest_engine_api_version: "1.50"
# Latest version of Docker Engine
- docker_ce_version: "28.2.0"
+ docker_ce_version: "28.2.1"
# Previous version of the Docker Engine
# (Used to show e.g., "latest" and "latest"-1 in engine install examples
- docker_ce_version_prev: "28.1.1"
+ docker_ce_version_prev: "28.1.0"
# Latest Docker Compose version
compose_version: "v2.36.2"
# Latest BuildKit version
@@ -342,6 +342,13 @@ module:
target: data/compose-cli
includeFiles: "*.yaml"
+ # Model CLI
+ - path: github.com/docker/model-cli
+ mounts:
+ - source: docs/reference
+ target: data/model-cli
+ includeFiles: "*.yaml"
+
# Scout CLI plugin (public dist repo)
- path: github.com/docker/scout-cli
mounts:
diff --git a/hugo_stats.json b/hugo_stats.json
index aa5f14ad77d1..ac7ca9624af9 100644
--- a/hugo_stats.json
+++ b/hugo_stats.json
@@ -42,6 +42,7 @@
"Download",
"Entra-ID",
"Entra-ID-SAML-2.0",
+ "Entra-ID/Azure-AD",
"External-cloud-storage",
"Fedora",
"For-Mac-with-Apple-silicon",
@@ -152,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",
@@ -187,6 +186,7 @@
"border-white",
"bottom-0",
"build-push-action",
+ "button",
"card",
"card-content",
"card-description",
@@ -195,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",
@@ -239,7 +236,7 @@
"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",
@@ -256,7 +253,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",
@@ -328,7 +324,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",
@@ -372,7 +367,6 @@
"lntable",
"lntd",
"m-2",
- "m-4",
"macOS",
"max-h-full",
"max-w-4xl",
@@ -382,9 +376,10 @@
"max-w-full",
"max-w-none",
"max-w-xl",
+ "mb-0",
"mb-1",
+ "mb-1.5",
"mb-2",
- "mb-3",
"mb-4",
"mb-6",
"mb-8",
@@ -403,6 +398,7 @@
"md:text-sm",
"md:top-16",
"md:w-[300px]",
+ "md:w-[320px]",
"md:z-auto",
"min-h-screen",
"min-w-0",
@@ -413,6 +409,7 @@
"ml-4",
"ml-auto",
"mt-1",
+ "mt-1.5",
"mt-2",
"mt-20",
"mt-4",
@@ -422,7 +419,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",
@@ -441,6 +441,7 @@
"overflow-y-auto",
"p-1",
"p-2",
+ "p-3",
"p-4",
"p-6",
"p-8",
@@ -464,7 +465,6 @@
"pt-10",
"pt-2",
"pt-4",
- "pt-5",
"px-1",
"px-2",
"px-4",
@@ -485,7 +485,6 @@
"rotate-45",
"rounded-full",
"rounded-sm",
- "rounded-sm-b-lg",
"scale-50",
"scale-75",
"scroll-mt-2",
@@ -523,11 +522,11 @@
"text-blue-light",
"text-divider-light",
"text-gray",
- "text-gray-100",
"text-gray-200",
"text-gray-400",
+ "text-gray-500",
"text-gray-600",
- "text-gray-800",
+ "text-gray-900",
"text-left",
"text-lg",
"text-magenta-light",
diff --git a/layouts/_default/_markup/render-codeblock.html b/layouts/_default/_markup/render-codeblock.html
index e00638f94484..f79fcd46582c 100644
--- a/layouts/_default/_markup/render-codeblock.html
+++ b/layouts/_default/_markup/render-codeblock.html
@@ -40,7 +40,7 @@
>