59422 Commits
Author SHA1 Message Date
Sebastiaan van Stijn 0a2b0f0051 Merge pull request #54078 from vvoland/bk-gha
.github/workflows/buildkit: Preserve Windows test reports on failure
2026-11-02 17:10:49 +01:00
Paweł Gronowski 9d58f27ab0 vendor: github.com/moby/profiles/seccomp v0.3.0
- Remove obsolete socket families from the default socket-domain
  allowlist, including DECnet and the families denied by the AppArmor
  update.
- Update the generated JSON profile to match the revised allowlist.
- Correct the architecture-map keys from `loong64` to `loongarch64` and
  from `mipsle` to `mipsel`.

full diff: https://github.com/moby/profiles/compare/seccomp/v0.2.4...seccomp/v0.3.0
release notes: https://github.com/moby/profiles/releases/tag/seccomp/v0.3.0

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-11-02 17:08:40 +01:00
Paweł Gronowski 07dd4e3c66 vendor: github.com/moby/profiles/apparmor v0.3.0
- Escape embedded quotes in profile declarations.
- Escape AppArmor pattern metacharacters in signal and ptrace peer
  selectors so profile names are matched literally rather than
  interpreted as patterns.
- Preserve the special `unconfined` selector when the daemon is not
  confined.
- Explicitly deny obsolete socket families, including AX.25, IPX,
  AppleTalk, NET/ROM, ROSE, Econet, ATM SVC, IrDA, WANPIPE, ISDN, and
  CAIF.

full diff: https://github.com/moby/profiles/compare/apparmor/v0.2.2...apparmor/v0.3.0
release notes: https://github.com/moby/profiles/releases/tag/apparmor/v0.3.0

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-11-02 17:08:35 +01:00
Paweł Gronowski f8a648cbb7 Merge pull request #54008 from renovate-bot/renovate/aws-sdk-go-v2-monorepo
fix(deps): update aws-sdk-go-v2 monorepo
2026-11-02 16:36:29 +01:00
Sebastiaan van Stijn a508694abf Merge pull request #54089 from thaJeztah/rro_oncevalue
daemon: kernelSupportsRecursivelyReadOnly: use sync.OnceValue
2026-11-02 16:01:30 +01:00
Sebastiaan van Stijn aae388ed2e Merge pull request #52480 from sahilsGit/51758-preserve-networks-on-failed-start
daemon: connectToNetwork: keep Networks on failure
2026-11-02 15:59:38 +01:00
Paweł Gronowski 751a28d043 Merge pull request #54006 from corhere/claude/swarm-ports-ufw-filtering-f5142d
libnetwork: DNAT gwbridge packets to ingress ports
2026-11-02 13:30:07 +01:00
Sebastiaan van Stijn a306fac8a6 daemon: kernelSupportsRecursivelyReadOnly: use sync.OnceValue
Use a sync.OnceValue for recursive read-only mount detection to simplify
the kernel feature detection. Also remove the temporary directory after
the mount is unmounted to avoid leaving it behind.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-11-02 13:04:47 +01:00
Sebastiaan van Stijn 71b1b4b34d Merge pull request #54064 from vvoland/restart-validate
daemon: Validate restart signals before changing container state
2026-11-02 11:21:07 +01:00
Sebastiaan van Stijn 88ecd22d19 Merge pull request #54076 from vvoland/work-labeler
labeler: More labels
2026-11-02 10:53:57 +01:00
Mend Renovate 940c82b168 fix(deps): update module cloud.google.com/go/logging to v1.21.1
Signed-off-by: Mend Renovate <bot@renovateapp.com>
2026-10-31 22:31:12 +00:00
Mend Renovate 08a76489b5 fix(deps): update aws-sdk-go-v2 monorepo
Signed-off-by: Mend Renovate <bot@renovateapp.com>
2026-10-30 18:59:22 +00:00
Paweł Gronowski 9aa9edfa78 Merge pull request #54059 from vvoland/ext-config
daemon: Enable/disable extensions
2026-10-30 19:55:46 +01:00
Paweł Gronowski 8c037227b5 Merge pull request #54074 from vvoland/deep-copy-ep
api/types/network: Deep-copy endpoint MAC addresses
2026-10-30 19:06:10 +01:00
Paweł Gronowski df2f89eb5a daemon: Enable/disable extensions
Add configuration options for disabling and enabling built-in
extensions.

This allow us to add built-ins that can be then chosen by the user.
For example, we can include multiple name generators and let the user
decide.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 19:02:58 +01:00
Paweł Gronowski acf344980e .github/workflows/buildkit: Preserve Windows test reports on failure
Upload reports even when tests fail, and retain them for seven days.
Include the run attempt in artifact names to avoid collisions on
reruns.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 18:54:46 +01:00
Paweł Gronowski 76235df0bf Merge pull request #54075 from vvoland/fix-flaky
test/docker-py: Skip tests that enable autolock
2026-10-30 18:43:21 +01:00
Paweł Gronowski cff9a2f8bd labeler: Limit area/dependencies to vendor-only changes
Require every changed file to be root go.mod, root go.sum, or under
vendor/.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 18:16:47 +01:00
Paweł Gronowski c624195b14 labeler: Include validation scripts and lint configuration in CI
Validation tooling outside .github/ missed area/ci.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 18:09:54 +01:00
Paweł Gronowski 0bd84504a8 labeler: Apply area/extensions
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 18:09:54 +01:00
Paweł Gronowski 1298467354 labeler: Apply area/plugins
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 18:09:54 +01:00
Paweł Gronowski 3d3475cb00 labeler: Apply area/images
Changes under daemon/internal/image/ missed area/images and fell back to
area/daemon.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 18:09:54 +01:00
Paweł Gronowski 588d92b6fc labeler: Use area/daemon only as a fallback component label
Matching every path under daemon/ added area/daemon even when a more
specific component label already covered the change.

Apply it only when no specific component rule matches and no such label
is already present on the pull request.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 18:08:07 +01:00
Paweł Gronowski abe7d7abe5 api/types/network: Deep-copy endpoint MAC addresses
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 18:00:11 +01:00
Cory Snider fc04cade92 test/docker-py: Skip tests that enable autolock
Enabling autolock makes the swarm node renew its TLS certificate.
When the test's teardown force-leaves the swarm while that renewal is
still writing to /var/lib/docker/swarm/certificates, removing the
swarm state fails with "unlinkat /var/lib/docker/swarm/certificates:
directory not empty".
The encrypted state stays on disk, so the next test's swarm init fails
with "Swarm is encrypted and needs to be unlocked", and docker-py's
force_leave_swarm helper hides the failed leave.
On this branch the victim is test_init_swarm_with_ca_config, which
runs right after test_init_swarm_with_autolock_managers.

Skip the two tests that enable autolock until the race is fixed.

Signed-off-by: Cory Snider <csnider@mirantis.com> (cherry picked from
commit 01958e5137)
Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-30 17:50:49 +01:00
Paweł Gronowski fceb7c142b Merge pull request #54067 from corhere/overlay-ipv6-mtu
libn/d/overlay: allow for IPv6 VXLAN overhead in MTU
2026-10-30 17:26:49 +01:00
Paweł Gronowski b6f2d75dbe Merge pull request #54069 from crazy-max/windows-runhcs-binary
dockerfile: include Windows containerd binaries
2026-10-30 17:22:28 +01:00
Paweł Gronowski 464f2737f8 Merge pull request #54070 from renovate-bot/renovate/containers-crun-1.x
chore(deps): update dependency containers/crun to v1.30.1
2026-10-30 16:12:25 +01:00
Mend Renovate 8313c2eafd chore(deps): update dependency containers/crun to v1.30.1
Signed-off-by: Mend Renovate <bot@renovateapp.com>
2026-10-30 12:29:21 +00:00
Paweł Gronowski cc66ad0142 Merge pull request #54068 from thaJeztah/bump_crun
renovate: track the dev-container runc and crun versions
2026-10-30 13:23:15 +01:00
Sebastiaan van Stijn e9c912ceb4 Merge pull request #54043 from vvoland/labeler-script
gha/labeler: Replace actions/labeler with a github-script
2026-10-30 12:19:21 +01:00
CrazyMax 0fe55a20b8 dockerfile: include Windows containerd binaries
Build containerd.exe and ctr.exe for Windows and include the runhcs shim
in the complete binary export. Select the shim source using the version
tested with the configured containerd release, matching packaging.

Signed-off-by: CrazyMax <1951866+crazy-max@users.noreply.github.com>
2026-10-30 12:15:26 +01:00
Sebastiaan van Stijn 4b9e076ef5 renovate: track the dev-container runc and crun versions
Similar to 20bbef77aa, but for the
runc and crun versions.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2026-10-30 11:48:47 +01:00
Sebastiaan van Stijn f37bdcea9a Merge pull request #54061 from renovate-bot/renovate/github.com-tonistiigi-fsutil-digest
fix(deps): update github.com/tonistiigi/fsutil digest to ca65610
2026-10-29 23:11:29 +01:00
Sebastiaan van Stijn 0bb082ee9a Merge pull request #54062 from renovate-bot/renovate/github.com-moby-sys-mountinfo-0.x
fix(deps): update module github.com/moby/sys/mountinfo to v0.7.3
2026-10-29 22:40:42 +01:00
Sebastiaan van Stijn 77b5c8a84e Merge pull request #54052 from bercedev/fix/hijack-end-otel-span
client: end the otelhttp span after a successful hijack
2026-10-29 20:50:10 +01:00
Sebastiaan van Stijn 6ca068b4d3 Merge pull request #54066 from vvoland/fix-milestone
Revert "releases: Remove versions.yaml"
2026-10-29 20:49:10 +01:00
Paweł Gronowski ce3cb99df7 Revert "releases: Remove versions.yaml"
This temporarily reverts commit 4c0e95b73c
to make PRs based on a branch with the older workflow still pass.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-29 20:33:57 +01:00
Sebastiaan van Stijn 1b0fa8214c Merge pull request #53715 from corhere/networkdb-rejoin-per-bootstrap
libnetwork/networkdb: fix periodic bootstrap rejoin
2026-10-29 20:32:12 +01:00
Cory Snider d95c4fbe4e libnetwork: DNAT gwbridge packets to ingress ports
Swarm ingress ports are published as ordinary port mappings on the
ingress load balancer's docker_gwbridge endpoint, so they follow the
userland-proxy setting like any other port mapping. With the proxy
enabled, the DNAT rule for a port mapping is not applied to packets
arriving on the bridge the mapping targets; those packets pass through
the INPUT chain to docker-proxy instead. Packets from a task to a
published port at its own node's address arrive on docker_gwbridge and
take that path, so a host firewall that drops unsolicited input, such as
ufw with its default "deny incoming" policy, drops them, even though the
same port remains reachable from other nodes and from the host itself.

Before ingress ports were published as port mappings, their DNAT rule in
the DOCKER-INGRESS chain applied to packets from docker_gwbridge too,
and no docker-proxy was started for them. A task could reach a published
port on its own node whatever the userland-proxy setting, without ufw's
policy getting in the way.

A connection from a container to a published port on one of the host's
addresses, where the port maps to a container on the same bridge, is a
hairpin connection: its packets enter and leave the host through that
bridge. docker-proxy makes hairpin connections work by accepting the
client's connection in the host and opening a new one to the container.
The kernel can handle them without the proxy by DNATing the packets back
across the bridge, but that needs br_netfilter: the server's replies are
bridged straight back to the client, and conntrack sees them and
restores their source address only if br_netfilter passes bridged
packets through netfilter. A container that connects to its own
published port also needs hairpin mode on its bridge port and a
MASQUERADE rule.

The bridge driver also uses br_netfilter to block inter-container
communication (ICC). Loading br_netfilter has a cost: it passes traffic
on every bridge on the host through the host's firewall rules, including
bridges that Docker does not manage. And some hosts cannot load
br_netfilter at all. The bridge driver therefore loads br_netfilter only
when necessary.

Add a NoSelfConnect hint to PortBinding and PublishedPort. It tells the
bridge driver that nothing behind the endpoint connects to the published
port. Packets from the endpoint's own bridge can then be DNATed to the
port without hairpin mode or the MASQUERADE rule, needing only
br_netfilter. The bridge driver uses the hint to bypass docker-proxy
where it can: for a binding with NoSelfConnect set, on a network with
ICC disabled, for which the bridge driver has already loaded
br_netfilter, the iptables and nftables firewallers DNAT packets from
the network's own bridge as well. The existing filter rule that accepts
DNATed packets arriving on an ICC-disabled bridge already lets them
through.

libnetwork sets the hint on ingress ports. They are published on the
load balancer's endpoint, whose sandbox libnetwork creates without a
container, so nothing behind the endpoint can connect to them.
docker_gwbridge also has ICC disabled. Other endpoints on
docker_gwbridge can have a container behind them, and only an endpoint's
owner knows whether one does, so the hint comes from the owner and is
carried on each binding.

For ingress ports, the result is a hybrid of the two userland-proxy
modes. docker-proxy still listens on the ports, but netfilter now DNATs
IPv4 packets arriving on docker_gwbridge before the proxy sees them, as
it already did for packets from other nodes. The proxy is left handling
IPv6 clients, which it forwards to the load balancer over IPv4, and
connections from the host to its loopback addresses.

Hairpin connections to ordinary containers' published ports still go
through docker-proxy. With the userland proxy disabled, the bridge
driver handles them in the kernel: it loads br_netfilter for every
network, and since it cannot know whether a container connects to its
own published port, it enables hairpin mode on every container's bridge
port and adds the MASQUERADE rule. Hairpin mode also sends broadcast and
multicast frames back to the container that sent them, and nothing
filters them out. Doing the same with the proxy enabled would bring that
behaviour, and the cost of br_netfilter, to every container. Closing
that gap is part of making operation without the userland proxy match
operation with it, apart from servers seeing clients' real addresses,
and is a larger change than restoring the ingress ports' earlier
behaviour.

Signed-off-by: Cory Snider <csnider@mirantis.com>
Assisted-By: Claude Opus 5.5
2026-10-29 14:52:48 -04:00
Paweł Gronowski b3aa447ad9 daemon: Validate restart signals before changing container state
Return an invalid-parameter error for invalid signals without starting
to change container's state.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-29 19:40:33 +01:00
Cory Snider 9a68e30286 libn/d/overlay: allow for IPv6 VXLAN overhead in MTU
The overlay driver subtracted a 50-byte VXLAN allowance from the
network's MTU, which assumes an IPv4 outer header. With an IPv6 data
path the outer header is 40 bytes, so the overhead is 70 bytes and the
overlay MTU was 20 bytes larger than the path can carry. Choose the
allowance from the address family of the data-path address.

If the family is not known, subtract the IPv6 allowance, as the
resulting MTU fits either family.

Signed-off-by: Cory Snider <csnider@mirantis.com>
2026-10-29 14:20:02 -04:00
Paweł Gronowski ed01f3a432 Merge pull request #54057 from vvoland/validate-milestone
ci/validate-milestone: Use the branch status issue for next versions
2026-10-29 19:09:39 +01:00
Paweł Gronowski cecd7514ba Merge pull request #50908 from ndeloof/restarting
Add `restarting` attribute on `die` events
2026-10-29 17:30:14 +01:00
Mend Renovate 575edf4d84 fix(deps): update module github.com/moby/sys/mountinfo to v0.7.3
Signed-off-by: Mend Renovate <bot@renovateapp.com>
2026-10-29 15:22:26 +00:00
Mend Renovate dcc4842f23 fix(deps): update github.com/tonistiigi/fsutil digest to ca65610
Signed-off-by: Mend Renovate <bot@renovateapp.com>
2026-10-29 15:20:57 +00:00
Nicolas De Loof 12dfe37342 Add restarting attribute on die event
Signed-off-by: Nicolas De Loof <nicolas.deloof@gmail.com>
2026-10-29 16:01:42 +01:00
Paweł Gronowski 31014d1c40 daemon: Hide empty containerd Git revisions in docker version
Omit the GitCommit component detail when containerd reports no
revision and keep known revisions visible.

Component details are optional informational fields, so omit unknown
revisions rather than add a network lookup to daemon builds.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-29 15:44:38 +01:00
Paweł Gronowski 2cf1d864eb Merge pull request #54054 from thaJeztah/bump_compress
vendor: github.com/klauspost/compress v1.20.2
2026-10-29 15:22:29 +01:00
Paweł Gronowski 4c0e95b73c releases: Remove versions.yaml
The milestone check reads the next versions from the pinned branch
status issue now, and nothing else uses this file.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2026-10-29 14:58:14 +01:00