Skip to content

Commit d89bb58

Browse files
[Backport 7.82.x] fix: pinned docker version (#54309)
Backport a117849 from #54299. ___ <!--Please give us some feedback on your experience writing this PR ! https://app.datadoghq.com/forms/43db4c02-6837-400c-8083-692e141b1b88 !--> ### What does this PR do? Addresses #incident-58566 by pinning Docker version, as a non-visible upgrade can silently introduce failures. Co-authored-by: ali.benabdallah <ali.benabdallah@datadoghq.com>
1 parent 6957c42 commit d89bb58

1 file changed

Lines changed: 9 additions & 6 deletions

File tree

test/e2e-framework/components/docker/component.go

Lines changed: 9 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -24,8 +24,10 @@ import (
2424
)
2525

2626
const (
27-
composeVersion = "v2.27.0"
28-
defaultTimeout = 300
27+
composeVersion = "v2.27.0"
28+
redHatFamilyDockerCEInstallVersion = "3:29.6.2-1.el9"
29+
redHatFamilyDockerCLIInstallVersion = "1:29.6.2-1.el9"
30+
defaultTimeout = 300
2931
)
3032

3133
type ManagerOutput struct {
@@ -193,12 +195,13 @@ func (d *Manager) install() (command.Command, error) {
193195
// Red Hat family flavors have no distro "docker" package, so install Docker CE
194196
// from Docker's repo first; the generic Ensure below then no-ops (command -v
195197
// docker succeeds). The el9 repo is reused because RHEL 10 ($releasever=10) is
196-
// not served by Docker yet.
198+
// not served by Docker yet. Keep the engine version pinned while this runtime
199+
// install exists, as upstream Docker CE releases can break provisioning.
197200
switch d.Host.OS.Descriptor().Flavor {
198201
case os.RedHat, os.CentOS, os.RockyLinux, os.AlmaLinux:
199202
dockerCEInstall, err := d.Host.OS.Runner().Command(d.namer.ResourceName("docker-ce-install"), &command.Args{
200203
Sudo: true,
201-
Create: pulumi.String(`bash <<'EOF'
204+
Create: pulumi.String(fmt.Sprintf(`bash <<'EOF'
202205
set -euxo pipefail
203206
# Single-node e2e box: relax SELinux and firewalld (mirrors the kubeadm box) so
204207
# the agent container can read host bind mounts without extra rules.
@@ -207,15 +210,15 @@ sed -i 's/^SELINUX=enforcing/SELINUX=permissive/' /etc/selinux/config || true
207210
systemctl disable --now firewalld || true
208211
curl -fsSL https://download.docker.com/linux/centos/docker-ce.repo -o /etc/yum.repos.d/docker-ce.repo
209212
sed -i 's/\$releasever/9/g' /etc/yum.repos.d/docker-ce.repo
210-
dnf install -y docker-ce docker-ce-cli containerd.io
213+
dnf install -y docker-ce-%[1]s docker-ce-cli-%[2]s containerd.io
211214
# RHEL 10 dropped the legacy iptables kernel module, so docker 29 must use its
212215
# nftables firewall backend or the daemon cannot program bridge NAT. Set it
213216
# before the first start (the full daemon.json follows); surface logs on failure.
214217
mkdir -p /etc/docker && printf '{"firewall-backend": "nftables", "storage-driver": "overlay2"}' > /etc/docker/daemon.json
215218
# docker needs IPv4 forwarding to create its default bridge network.
216219
echo 'net.ipv4.ip_forward=1' > /etc/sysctl.d/99-docker.conf && sysctl -w net.ipv4.ip_forward=1
217220
systemctl enable --now docker || { journalctl -xeu docker.service --no-pager | tail -80; exit 1; }
218-
EOF`),
221+
EOF`, redHatFamilyDockerCEInstallVersion, redHatFamilyDockerCLIInstallVersion)),
219222
}, opts...)
220223
if err != nil {
221224
return nil, err

0 commit comments

Comments
 (0)