Work around bug in Docker 28.3.3 that prevents pushing to registry without authentication. (#1110) (#1111)

(cherry picked from commit e1920d1cc7)

Co-authored-by: Felix Fontein <felix@fontein.de>
This commit is contained in:
patchback[bot] 2025-08-03 15:39:01 +02:00 committed by GitHub
parent 560516a261
commit ac046ce99c
No known key found for this signature in database
GPG Key ID: B5690EEEBB952194
3 changed files with 15 additions and 4 deletions

View File

@ -0,0 +1,3 @@
bugfixes:
- "docker_image, docker_image_push - work around a bug in Docker 28.3.3 that prevents pushing without authentication to a registry
(https://github.com/ansible-collections/community.docker/pull/1110)."

View File

@ -366,6 +366,7 @@ stdout:
version_added: 1.0.0
'''
import base64
import errno
import json
import os
@ -719,8 +720,11 @@ class ImageManager(DockerBaseClass):
push_registry, dummy = resolve_repository_name(push_repository)
headers = {}
header = get_config_header(self.client, push_registry)
if header:
headers['X-Registry-Auth'] = header
if not header:
# For some reason, from Docker 28.3.3 on not specifying X-Registry-Auth seems to be invalid.
# See https://github.com/moby/moby/issues/50614.
header = base64.urlsafe_b64encode(b"{}")
headers['X-Registry-Auth'] = header
response = self.client._post_json(
self.client._url("/images/{0}/push", push_repository),
data=None,

View File

@ -71,6 +71,7 @@ image:
sample: {}
'''
import base64
import traceback
from ansible.module_utils.common.text.converters import to_native
@ -141,8 +142,11 @@ class ImagePusher(DockerBaseClass):
headers = {}
header = get_config_header(self.client, push_registry)
if header:
headers['X-Registry-Auth'] = header
if not header:
# For some reason, from Docker 28.3.3 on not specifying X-Registry-Auth seems to be invalid.
# See https://github.com/moby/moby/issues/50614.
header = base64.urlsafe_b64encode(b"{}")
headers['X-Registry-Auth'] = header
response = self.client._post_json(
self.client._url("/images/{0}/push", self.name),
data=None,