Skip to content

Docker 27.0.1: Failure to login to docker registry with port #1082

@linsomniac

Description

@linsomniac

Jenkins and plugins versions report

Environment
Jenkins: 2.452.2
OS: Linux - 5.15.0-105-generic
Java: 17.0.11 - Amazon.com Inc. (OpenJDK 64-Bit Server VM)
---
ace-editor:1.1
ansible:403.v8d0ca_dcb_b_502
ansicolor:1.0.4
ant:497.v94e7d9fffa_b_9
antisamy-markup-formatter:162.v0e6ec0fcfcf6
apache-httpcomponents-client-4-api:4.5.14-208.v438351942757
apache-httpcomponents-client-5-api:5.3.1-1.0
asm-api:9.7-33.v4d23ef79fcc8
authentication-tokens:1.113.v81215a_241826
bitbucket-oauth:0.13
bootstrap4-api:4.6.0-6
bootstrap5-api:5.3.3-1
bouncycastle-api:2.30.1.78.1-233.vfdcdeb_0a_08a_a_
branch-api:2.1169.va_f810c56e895
build-symlink:1.1
build-timeout:1.33
build-user-vars-plugin:166.v52976843b_435
caffeine-api:3.1.8-133.v17b_1ff2e0599
checks-api:2.2.0
cloud-stats:336.v788e4055508b_
cloudbees-folder:6.928.v7c780211d66e
command-launcher:107.v773860566e2e
commons-lang3-api:3.14.0-76.vda_5591261cfe
commons-text-api:1.12.0-119.v73ef73f2345d
convert-to-pipeline:1.0
credentials:1337.v60b_d7b_c7b_c9f
credentials-binding:677.vdc9d38cb_254d
dashboard-view:2.508.va_74654f026d1
dependency-check-jenkins-plugin:5.5.0
display-url-api:2.204.vf6fddd8a_8b_e9
docker-commons:439.va_3cb_0a_6a_fb_29
docker-java-api:3.3.6-90.ve7c5c7535ddd
docker-workflow:580.vc0c340686b_54
durable-task:555.v6802fe0f0b_82
echarts-api:5.5.0-1
eddsa-api:0.3.0-4.v84c6f0f4969e
email-ext:1814.v404722f34263
emailext-template:1.5
external-monitor-job:215.v2e88e894db_f8
font-awesome-api:6.5.2-1
git:5.2.2
git-client:5.0.0
git-push:34.vd474e0fe7b_ec
git-server:126.v0d945d8d2b_39
gradle:2.12
gson-api:2.11.0-41.v019fcf6125dc
instance-identity:185.v303dc7c645f9
ionicons-api:74.v93d5eb_813d5f
jackson2-api:2.17.0-379.v02de8ec9f64c
jakarta-activation-api:2.1.3-1
jakarta-mail-api:2.1.3-1
javadoc:243.vb_b_503b_b_45537
javax-activation-api:1.2.0-7
javax-mail-api:1.6.2-10
jaxb:2.3.9-1
jdk-tool:73.vddf737284550
jnr-posix-api:3.1.19-2
joda-time-api:2.12.7-29.v5a_b_e3a_82269a_
jquery-detached:1.2.1
jquery3-api:3.7.1-2
jsch:0.2.16-86.v42e010d9484b_
json-api:20240303-41.v94e11e6de726
json-path-api:2.9.0-58.v62e3e85b_a_655
junit:1265.v65b_14fa_f12f0
ldap:725.v3cb_b_711b_1a_ef
mailer:472.vf7c289a_4b_420
mapdb-api:1.0.9-40.v58107308b_7a_7
matrix-auth:3.2.2
matrix-project:832.va_66e270d2946
maven-plugin:3.23
mina-sshd-api-common:2.12.1-113.v4d3ea_5eb_7f72
mina-sshd-api-core:2.12.1-113.v4d3ea_5eb_7f72
momentjs:1.1.1
nexus-jenkins-plugin:3.13.20220201-143240.3d657a5
pam-auth:1.11
performance:962.v95a_4913d332e
pipeline-build-step:540.vb_e8849e1a_b_d8
pipeline-graph-analysis:216.vfd8b_ece330ca_
pipeline-groovy-lib:727.ve832a_9244dfa_
pipeline-input-step:495.ve9c153f6067b_
pipeline-milestone-step:119.vdfdc43fc3b_9a_
pipeline-model-api:2.2198.v41dd8ef6dd56
pipeline-model-definition:2.2198.v41dd8ef6dd56
pipeline-model-extensions:2.2198.v41dd8ef6dd56
pipeline-rest-api:2.34
pipeline-stage-step:312.v8cd10304c27a_
pipeline-stage-tags-metadata:2.2198.v41dd8ef6dd56
pipeline-stage-view:2.34
plain-credentials:182.v468b_97b_9dcb_8
plugin-util-api:4.1.0
popper-api:1.16.1-3
popper2-api:2.11.6-4
postbuild-task:1.9
preSCMbuildstep:71.v1f2990a_37e27
pwauth:0.4
rake:1.8.0
release:2.19
resource-disposer:0.23
robot:3.5.2
rubyMetrics:1.6.5
scm-api:690.vfc8b_54395023
script-security:1341.va_2819b_414686
snakeyaml-api:2.2-111.vc6598e30cc65
ssh:2.6.1
ssh-agent:367.vf9076cd4ee21
ssh-credentials:337.v395d2403ccd4
ssh-slaves:2.973.v0fa_8c0dea_f9f
sshd:3.330.vc866a_8389b_58
structs:337.v1b_04ea_4df7c8
timestamper:1.27
token-macro:400.v35420b_922dcb_
trilead-api:2.147.vb_73cc728a_32e
variant:60.v7290fc0eb_b_cd
versioncolumn:243.vda_c20eea_a_8a_f
windows-slaves:1.8.1
workflow-aggregator:596.v8c21c963d92d
workflow-api:1316.v33eb_726c50b_a_
workflow-basic-steps:1058.vcb_fc1e3a_21a_9
workflow-cps:3903.v48a_8836749e9
workflow-cps-global-lib:612.v55f2f80781ef
workflow-durable-task-step:1353.v1891a_b_01da_18
workflow-job:1400.v7fd111b_ec82f
workflow-multibranch:783.787.v50539468395f
workflow-scm-step:427.v4ca_6512e7df1
workflow-step-api:657.v03b_e8115821b_
workflow-support:907.v6713a_ed8a_573
ws-cleanup:0.46
xvfb:1.2

What Operating System are you using (both controller, and any agents involved in the problem)?

Ubuntu 22.04

Reproduction steps

  1. Set up a TLS registry at a non-443 port (like 444).
  2. Configure "Declarative Pipeline (Docker)" in Jenkins settings to be Registry URL of "https://myregistry.example.com:444"
  3. Upgrade from docker-ce 26.1.4 to docker-ce 27.0.1.
  4. Run a build.

Expected Results

Successful build.

Actual Results

In console output received I received the following:

[Pipeline] withDockerRegistry
15:31:38  $ docker login -u dockerupload -p ******** https://myregistry.example.com:444/
15:31:38  WARNING! Using --password via the CLI is insecure. Use --password-stdin.
15:31:38  Error response from daemon: login attempt to https://myregistry.example.com/v2/ failed with status: 404 Not Found
[Pipeline] // withDockerRegistry

NOTE: The "docker login" line has the 444, the "Error" line does not.

I have verified that if I upgrade to docker v27, I my agent will only hit port 443, and if I downgrade to 26.1.4 it only hits 444.

I've verified that if I run, at the CLI on my agent machine: docker login https://myregistry.example.com:444/v2/ I get the 404 error (indicating it is going to the wrong port, also the "Error" line above):

Error response from daemon: login attempt to https://myregistry.example.com/v2/ failed with status: 404 Not Found

If I instead do: docker login myregistry.example.com:444 it reports:

Error response from daemon: login attempt to https://myregistry.example.com:444/v2/ failed with status: 401 Unauthorized

(I entered an invalid username/password for testing).

If I downgrade Docker to v26.1.4, both of the above commands produce the "401 Unauthorized" result.

I cannot change my "Declarative Pipeline (Docker)" settings to remove the https:// because Jenkins will error out with "Unknown protocol myregistry.example.com".

Anything else?

I'm opening a bug with Docker as well, as this seems to be a change that is not documented in their release notes.

Are you interested in contributing a fix?

I'm not able to contribute a fix.

Metadata

Metadata

Assignees

No one assigned

    Labels

    bugAn issue reporting a bug or a PR fixing one.

    Type

    No type
    No fields configured for issues without a type.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions