Commit Graph

4572 Commits

Author SHA1 Message Date
Paweł Gronowski
4fa326fa85 api: Cut v1.53
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-01-26 19:00:50 +01:00
Paweł Gronowski
2d8289cbf3 Merge pull request #51919 from htoyoda18/fix/decode
api/pkg/authconfig: reject multiple JSON documents in Decode
2026-01-26 17:47:20 +00:00
hiroto.toyoda
f6c0f41e6d api/pkg/authconfig: reject multiple JSON documents in Decode
Explicitly reject multiple JSON documents in authentication payloads
instead of silently ignoring them. This helps notify users when the
authentication payload is incorrectly formatted.

Signed-off-by: hiroto.toyoda <hiroto.toyoda@dena.com>
2026-01-27 00:30:51 +09:00
Sebastiaan van Stijn
62c1a719b3 api/types: use "omitzero" instead of "omitempty" for "netip" fields
Pull request 50956 (88adc28731) updated
various types in the API module from a string to a `netip.Prefix` or
`netip.Addr`. A side-effect of this was that zero values would no longer
be omitted, and instead marshaled as an empty string;

    package main

    import (
        "encoding/json"
        "fmt"
        "net/netip"
    )

    type Foo struct {
        OmitEmpty netip.Prefix `json:",omitempty"`
        OmitZero  netip.Prefix `json:",omitzero"`
    }

    func main() {
        out, _ := json.Marshal(Foo{})
        fmt.Println(string(out))
    }

The above produces `{"OmitEmpty":""}`, not omitting the empty address.

This patch;

- updates most types to use `omitzero` instead of `omitempty`.
- adds explicit `json` names to fields.

There's one type remaining that uses `omitzero`, but it's generated by
go-swagger, which currently doesn't support `omitzero`; the `PortSummary.IP`;
335f60509f/api/types/container/port_summary.go (L12-L20)

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-01-26 15:57:18 +01:00
Sebastiaan van Stijn
f3343bf846 api/types: gofumpt
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-01-24 17:14:59 +01:00
Sebastiaan van Stijn
26e8376a3c api: fix grammar: user defined / user specified -> user-(defined|specified)
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-01-21 15:31:18 +01:00
Sebastiaan van Stijn
bd660c390b api/docs: sync MountType to versioned swagger specs
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-01-19 16:01:58 +01:00
Sebastiaan van Stijn
721cb50a18 api: add MountType to definitions
Add a definition for MountType, to make sure available options in
the enum don't diverge. In future we can use this definition to
generate the consts in code as well, but swagger doesn't currently
have an option to document the enum values.

Also using `allOf` to allow description and reference to be combined.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-01-19 14:55:40 +01:00
Tonis Tiigi
7745b7135f api: add swagger definitions for new Identity type
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-01-16 08:07:15 -08:00
Tonis Tiigi
1d4e04bed1 api: add inspect identity base type to expose trusted image origin
Signed-off-by: Tonis Tiigi <tonistiigi@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-01-16 08:04:36 -08:00
Paweł Gronowski
cebb12ddaf update to go1.25.6
This releases includes 6 security fixes following the security policy:

- archive/zip: denial of service when parsing arbitrary ZIP archives

    archive/zip used a super-linear file name indexing algorithm that is invoked the first time a file in an archive is opened. This can lead to a denial of service when consuming a maliciously constructed ZIP archive.

    Thanks to Thanks to Jakub Ciolek for reporting this issue.

    This is CVE-2025-61728 and Go issue https://go.dev/issue/77102.

- net/http: memory exhaustion in Request.ParseForm

    When parsing a URL-encoded form net/http may allocate an unexpected amount of
    memory when provided a large number of key-value pairs. This can result in a
    denial of service due to memory exhaustion.

    Thanks to jub0bs for reporting this issue.

    This is CVE-2025-61726 and Go issue https://go.dev/issue/77101.

- crypto/tls: Config.Clone copies automatically generated session ticket keys, session resumption does not account for the expiration of full certificate chain

    The Config.Clone methods allows cloning a Config which has already been passed
    to a TLS function, allowing it to be mutated and reused.

    If Config.SessionTicketKey has not been set, and Config.SetSessionTicketKeys has
    not been called, crypto/tls will generate random session ticket keys and
    automatically rotate them. Config.Clone would copy these automatically generated
    keys into the returned Config, meaning that the two Configs would share session
    ticket keys, allowing sessions created using one Config could be used to resume
    sessions with the other Config. This can allow clients to resume sessions even
    though the Config may be configured such that they should not be able to do so.

    Config.Clone no longer copies the automatically generated session ticket keys.
    Config.Clone still copies keys which are explicitly provided, either by setting
    Config.SessionTicketKey or by calling Config.SetSessionTicketKeys.

    This issue was discoverd by the Go Security team while investigating another
    issue reported by Coia Prant (github.com/rbqvq).

    Additionally, on the server side only the expiration of the leaf certificate, if
    one was provided during the initial handshake, was checked when considering if a
    session could be resumed. This allowed sessions to be resumed if an intermediate
    or root certificate in the chain had expired.

    Session resumption now takes into account of the full chain when determining if
    the session can be resumed.

    Thanks to Coia Prant (github.com/rbqvq) for reporting this issue.

    This is CVE-2025-68121 and Go issue https://go.dev/issue/77113.

- cmd/go: bypass of flag sanitization can lead to arbitrary code execution

    Usage of 'CgoPkgConfig' allowed execution of the pkg-config
    binary with flags that are not explicitly safe-listed.

    To prevent this behavior, compiler flags resulting from usage
    of 'CgoPkgConfig' are sanitized prior to invoking pkg-config.

    Thank you to RyotaK (https://ryotak.net) of GMO Flatt Security Inc.
    for reporting this issue.

    This is CVE-2025-61731 and go.dev/issue/77100.

- cmd/go: unexpected code execution when invoking toolchain

    The Go toolchain supports multiple VCS which are used retrieving modules and
    embedding build information into binaries.

    On systems with Mercurial installed (hg) downloading modules (e.g. via go get or
    go mod download) from non-standard sources (e.g. custom domains) can cause
    unexpected code execution due to how external VCS commands are constructed.

    On systems with Git installed, downloading and building modules with malicious
    version strings could allow an attacker to write to arbitrary files on the
    system the user has access to. This can only be triggered by explicitly
    providing the malicious version strings to the toolchain, and does not affect
    usage of @latest or bare module paths.

    The toolchain now uses safer VCS options to prevent misinterpretation of
    untrusted inputs. In addition, the toolchain now disallows module version
    strings prefixed with a "-" or "/" character.

    Thanks to splitline (@splitline) from DEVCORE Research Team for reporting this
    issue.

    This is CVE-2025-68119 and Go issue https://go.dev/issue/77099.

- crypto/tls: handshake messages may be processed at the incorrect encryption level

    During the TLS 1.3 handshake if multiple messages are sent in records that span
    encryption level boundaries (for instance the Client Hello and Encrypted
    Extensions messages), the subsequent messages may be processed before the
    encryption level changes. This can cause some minor information disclosure if a
    network-local attacker can inject messages during the handshake.

    Thanks to Coia Prant (github.com/rbqvq) for reporting this issue.

    This is CVE-2025-61730 and Go issue https://go.dev/issue/76443

View the release notes for more information:
https://go.dev/doc/devel/release#go1.25.6

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-01-16 09:28:24 +01:00
Sebastiaan van Stijn
00166d05d9 Merge pull request #51782 from austinvazquez/add-api-go-package
api: add root doc.go to prevent fallback to github.com/moby/moby
2026-01-08 20:55:41 +01:00
Sebastiaan van Stijn
41d19f6644 api/docs: backport assorted fixes and enhancements to older api versions
This syncs the versioned swagger files with some fixes and enhancements
made in:

- 955897fe21
- 22345e3369
- 917d66d833
- 1fd2395cd3

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-01-06 22:37:50 +01:00
Sebastiaan van Stijn
0f2e9a11c2 Merge pull request #51788 from majiayu000/37671-fix-config-data-base64-description
docs: fix base64 encoding description for secrets and configs
2026-01-06 20:47:30 +01:00
Sebastiaan van Stijn
78c0257db6 Merge pull request #51791 from majiayu000/22402-improve-image-tag-description
docs: improve description of image tag API endpoint
2026-01-06 15:58:28 +01:00
Sebastiaan van Stijn
e3f60d72f4 Merge pull request #51786 from majiayu000/43810-fix-stats-api-docs-cgroups-v2
docs: update stats API description for cgroups v2 compatibility
2026-01-05 22:04:19 +01:00
Paweł Gronowski
910430d0c3 Merge pull request #51785 from majiayu000/49594-fix-api-arch-description
docs: fix reversed descriptions of version.Arch and info.Architecture
2026-01-05 15:20:00 +00:00
majiayu000
0fb55db037 docs: clarify healthcheck behavior
Signed-off-by: majiayu000 <1835304752@qq.com>
2026-01-05 19:48:15 +08:00
majiayu000
22345e3369 docs: improve description of image tag API endpoint
Clarify what the /images/{name}/tag endpoint does by explaining that
it creates an additional reference (tag) to the source image, and that
existing tags will be overwritten.

The previous description "Tag an image so that it becomes part of a
repository" was unclear about what the operation actually does.

Fixes #22402

Signed-off-by: majiayu000 <1835304752@qq.com>
2025-12-26 17:50:09 +08:00
majiayu000
1b9f126ede docs: document healthcheck timeout termination behavior
Document that when a health check command exceeds its configured
timeout, the process is forcibly terminated. This clarifies the
behavior for users who need predictable handling of hung health
check commands.

Fixes #45927

Signed-off-by: majiayu000 <1835304752@qq.com>
2025-12-26 17:44:50 +08:00
majiayu000
955897fe21 docs: fix base64 encoding description for secrets and configs
The API documentation incorrectly stated that the Data field for
secrets and configs should use Base64-url-safe-encoded format
(RFC 4648 section 5). However, Docker actually uses standard base64
encoding (RFC 4648 section 4).

This caused confusion when users tried to use URL-safe base64 encoding
and received "illegal base64 data" errors.

Update the documentation to correctly reference RFC 4648 section 4
(standard base64) instead of section 5 (URL-safe base64).

Fixes #37671

Signed-off-by: majiayu000 <1835304752@qq.com>
2025-12-26 17:42:08 +08:00
majiayu000
917d66d833 docs: update stats API description for cgroups v2 compatibility
Update the memory stats documentation to clarify differences between
cgroups v1 and v2:

- Add cgroups v2 formula for calculating used_memory using inactive_file
  instead of cache field which is not available in v2
- Update memory_stats.stats description to explain that field names
  differ between v1 (cache, rss, mapped_file) and v2 (file, anon, inactive_file)

Fixes #43810

Signed-off-by: majiayu000 <1835304752@qq.com>
2025-12-26 17:28:52 +08:00
majiayu000
1fd2395cd3 docs: fix reversed descriptions of version.Arch and info.Architecture
The API documentation had incorrect descriptions for these fields:

- `/version` endpoint's `Arch` field was described generically but actually
  returns the Go runtime's GOARCH value
- `/info` endpoint's `Architecture` field incorrectly stated it returns
  GOARCH, but it actually returns the OS-reported hardware architecture
  (equivalent to `uname -m`)

This commit corrects the descriptions to accurately reflect the
implementation.

Fixes #49594

Signed-off-by: majiayu000 <1835304752@qq.com>
2025-12-26 14:34:05 +08:00
Sebastiaan van Stijn
e09afad3cb api/types/network: remove use of "reflect" in test
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-12-23 11:26:32 +01:00
Austin Vazquez
78c6b01902 api: add root doc.go to prevent fallback to github.com/moby/moby
Signed-off-by: Austin Vazquez <austin.vazquez@docker.com>
2025-12-22 14:32:23 -06:00
Austin Vazquez
0f0d197d78 Merge pull request #51760 from thaJeztah/fix_godoc
api/types/jsonstream: Message: fix godoc
2025-12-18 13:07:27 -06:00
Sebastiaan van Stijn
0fd5cc134b api/types/jsonstream: Message: fix godoc
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-12-18 15:04:27 +01:00
Sebastiaan van Stijn
6c845ded18 api/types/swarm: ResourceRequirements.MemorySwappiness: fix json tag
types/swarm/task.go:151:2: structtag: struct field tag `json:MemorySwappiness,omitzero"` not compatible with reflect.StructTag.Get: bad syntax for struct tag value (govet)
        MemorySwappiness *int64 `json:MemorySwappiness,omitzero"`
        ^

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-12-18 15:03:13 +01:00
Paweł Gronowski
87da1c2fee Merge pull request #51745 from thaJeztah/api_go_version
api: update to go1.25.5 and remove version from Makefile
2025-12-17 12:40:07 +00:00
Sebastiaan van Stijn
e1fb5ef4a7 api: update to go1.25.5 and remove version from Makefile
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-12-17 12:57:11 +01:00
Nicolas De Loof
aef5d996ce use mime-type application/jsonl to align with openapi 3.2
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-12-17 11:37:48 +01:00
Sebastiaan van Stijn
b2d84a3ef5 Merge pull request #51732 from thaJeztah/sync_swagger_docs
api/docs: move ImageHistoryResponseItem to definitions (API v1.25-v1.52)
2025-12-16 13:50:34 +01:00
Paweł Gronowski
5d716f20a3 Merge pull request #51721 from vvoland/deprecate-grpc
api: deprecate /grpc and /session endpoints
2025-12-16 12:34:55 +00:00
Rob Murray
1e209e788b Continue to backfill empty PortBindings in API 1.53
- introduced by commit 0ca7ac3 ("daemon: backfill empty PBs
  slices for backward compat")

Signed-off-by: Rob Murray <rob.murray@docker.com>
2025-12-16 11:03:58 +00:00
Sebastiaan van Stijn
2cce7ff87f api/docs: move ImageHistoryResponseItem to definitions (API v1.25-v1.52)
Similar to caaa9c9bb5, but applied to
existing API versions, so that it's easier to compare differences
between versions.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-12-16 11:42:03 +01:00
Paweł Gronowski
f44b5abf0e api: deprecate /grpc and /session endpoints
The /grpc and /session endpoints are now deprecated as the Engine has
been upgraded to properly support HTTP/2 and h2c requests, making these
specialized endpoints unnecessary.

These endpoints will be removed in the next major API version to
complete the cleanup.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-12-15 18:44:22 +01:00
Paweł Gronowski
a0bd623959 api: remove docs/v1.53.yaml
The API is not cut yet

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-12-15 17:24:53 +01:00
Brian Goff
2ec5bdfaf6 Merge pull request #51666 from ndeloof/swagger
simplify swagger generation
2025-12-15 08:13:20 -08:00
Rob Murray
7c7a626e5d NRI: include in API Info response
Signed-off-by: Rob Murray <rob.murray@docker.com>
2025-12-15 10:36:05 +00:00
Rob Murray
f6b1488468 Bump API to v1.53
Signed-off-by: Rob Murray <rob.murray@docker.com>
2025-12-15 09:45:21 +00:00
Nicolas De Loof
caaa9c9bb5 simplify swagger generation
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2025-12-12 09:19:50 +01:00
Sebastiaan van Stijn
70298eb5b8 Merge pull request #51300 from rafaelcamelo31/50486_api_move_scripts
api: move scripts to generate and validate swagger to api module
2025-12-11 21:35:38 +01:00
Rafael Camelo
0666108ebf api: move scripts to generate and validate swagger to api module
Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>

revert api/swagger.yaml to undo formatting

Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>

refactor(api): update Dockerfile and Makefile with newline at the EOF and use current best practices

Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>

refactor validations and swagger generation flow

Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>

shfmt

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>

refactor generate-swagger-api.sh to use absolute path

Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>

add validate-api-swagger job for GitHub Actions

Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>

fix validate-api-swagger ci workflow

Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>

update go version and redoc in api module

Signed-off-by: Rafael Camelo <rafaelcamelo31@gmail.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-12-11 15:16:47 +01:00
Sebastiaan van Stijn
773aca9f5d api, client: add separate LICENSE file
In a multi-module repository, the top-level LICENSE file is used for
all modules in the repository. However, when using a "replace" rule,
the vendored file is removed, but added back when removing the replace
rule.

This patch adds copies of the license to each of the modules to reduce
code-churn; these are vanilla copies downloaded from;
https://www.apache.org/licenses/LICENSE-2.0.txt

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-12-05 15:57:55 +01:00
Kai Harder
a0e5e0525b Improve description of tmpfs mode
I recently had a great time to find out why the tmpfs mode provided did not work
until I found out that the API does not expect octal values but decimal ones.

Therefore, this PR will hopefully clarify the logic and prevent user questions in the future

Signed-off-by: Kai Harder <kai.harder@sap.com>
2025-12-02 16:34:12 +01:00
Sebastiaan van Stijn
15241265dc client, api: update go.mod to go1.24
While go1.23 still works, it's already EOL, so it may be a better
starting point to use that as minimum version for these modules, as
they're brand new.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-11-10 18:42:11 +01:00
Sebastiaan van Stijn
ed6d436d51 Merge pull request #51458 from thaJeztah/rm_deprecated_dockerversion
api/types/plugin: remove deprecated Config.DockerVersion
2025-11-10 18:28:56 +01:00
Sebastiaan van Stijn
e8f156110a api/types/plugin: remove deprecated Config.DockerVersion
This was deprecated in c4fda95bea, and
already omitted.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-11-10 18:11:45 +01:00
Sebastiaan van Stijn
34fb9de7f3 api/docs: remove links to docs.docker.com from changelog
The docker documentation website may not be publishing rendered versions
of the swagger for deprecated API versions, so let's remove these links
from the changelog.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-11-10 18:04:01 +01:00
Paweł Gronowski
7cff366d43 Merge pull request #51439 from thaJeztah/concrete_enums
api/types/container: make ContainerState, HealthStatus concrete types
2025-11-10 16:21:22 +01:00