Commit Graph
2585 Commits
Author SHA1 Message Date
Sebastiaan van Stijn b37d84fd10 cli/command: move prompt utilities to separate package
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-11 12:23:16 +02:00
Sebastiaan van Stijn af85e1e2f7 cli/command: implement ErrPromptTerminated without errdefs package
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-11 12:15:11 +02:00
Sebastiaan van Stijn 8633197105 Merge pull request #5914 from thaJeztah/use_atomicwriter
cli/command: deprecate CopyToFile and reimplement with atomicwriter
2025-04-11 12:10:46 +02:00
Sebastiaan van Stijn 94afbc1116 Merge pull request #5999 from thaJeztah/bump_engine
vendor: github.com/docker/docker 511cd1c0a736 (master, v28.x-dev)
2025-04-11 12:09:28 +02:00
Sebastiaan van Stijn 4530417f6b vendor: github.com/docker/docker 511cd1c0a736 (master, v28.x-dev)
full diff: https://github.com/docker/docker/compare/185651d26bc6...511cd1c0a7369a47f10d4435184b8668623eadea

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-10 22:03:48 +02:00
Sebastiaan van Stijn 23d7346f75 Merge pull request #5977 from thaJeztah/deprecate_config_experimental
cli/config/configfile: deprecate ConfigFile.Experimental field
2025-04-10 14:36:11 +02:00
Sebastiaan van Stijn 932574363f cli/command/system: needsServerInfo: add fast-paths
We can return early without executing the regular expression or evaluating
the template for `--format=json` or `--format='{{json .}}'`.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-10 10:50:04 +02:00
Sebastiaan van Stijn ac375caa87 Merge pull request #5918 from Benehiko/info-exit-code
system/info: failure to connect to docker socket should propagate error
2025-04-10 10:31:05 +02:00
Sebastiaan van Stijn 7cc6b8ebf4 cli/command: deprecate CopyToFile and reimplement with atomicwriter
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-10 09:46:06 +02:00
Sebastiaan van Stijn b8bcf6f5ad container export: implement file-write with atomicwriter
Same functionality, but implemented with atomicwriter. There's a slight
difference in error-messages produced (but can be adjusted if we want).

Before:

    docker container export -o ./no/such/foo mycontainer
    failed to export container: invalid output path: directory "no/such" does not exist

    docker container export -o /no/permissions mycontainer
    failed to export container: stat /no/permissions: permission denied

After:

    docker container export -o ./no/such/foo mycontainer
    failed to export container: invalid file path: stat no/such: no such file or directory

    docker container export -o /no/permissions mycontainer
    failed to export container: failed to stat output path: lstat /no/permissions: permission denied

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-10 09:46:06 +02:00
Sebastiaan van Stijn d47d2338b7 image save: implement file-write with atomicwriter
Same functionality, but implemented with atomicwriter. There's a slight
difference in error-messages produced (but can be adjusted if we want).

Before:

    docker image save -o ./no/such/foo busybox:latest
    failed to save image: invalid output path: directory "no/such" does not exist

    docker image save -o /no/permissions busybox:latest
    failed to save image: stat /no/permissions: permission denied

After:

    docker image save -o ./no/such/foo busybox:latest
    failed to save image: invalid file path: stat no/such: no such file or directory

    docker image save -o /no/permissions busybox:latest
    failed to save image: failed to stat output path: lstat /no/permissions: permission denied

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-10 09:46:05 +02:00
Sebastiaan van Stijn 342a01a9ff migrate to use github.com/moby/go-archive
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-09 13:18:58 +02:00
Sebastiaan van Stijn 2bf317ad5f vendor: github.com/docker/docker 185651d26bc6 (master, v28.0-dev)
full diff: https://github.com/moby/moby/compare/v28.0.4...185651d26bc6281b199a5b7ff1942b53e4f17b96

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>

vendor: moby with atomicwriter

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-07 19:20:39 +02:00
Sebastiaan van Stijn 2631d5ba99 Merge pull request #5985 from thaJeztah/command_fix_tests
cli/command: minor test-fixes and cleanups
2025-04-04 18:21:24 +02:00
Sebastiaan van Stijn a2e179457e Merge pull request #5946 from thaJeztah/prunefilter_cleanup
cli/command: PruneFilters: slight cleanup
2025-04-04 18:19:45 +02:00
Sebastiaan van Stijn 2c3cf8db0f Merge pull request #5984 from thaJeztah/fix_prune_cancel_errormessage
cli/command/network: fix error-message for cancelled prune
2025-04-04 18:18:46 +02:00
Sebastiaan van Stijn b65f52fd64 Merge pull request #5982 from thaJeztah/context_unexport_limitreader
cli/context/store: un-export LimitedReader
2025-04-04 18:14:52 +02:00
Sebastiaan van Stijn db44e59be7 cli/command: use stdlib for temp-dirs
gotest.tools' fs package only provides very minimal benefits here;
use stdlib functions to make things slightly more transparent.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-02 16:45:05 +02:00
Sebastiaan van Stijn ce4b752274 cli/command: TestNewDockerCliAndOperators fix unhandled errors
Assert that the write succeeded; also changing `Fprintf` to `Fprint`,
because we were not using templating (we should check why no linter
complained about this).

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-02 16:06:10 +02:00
Sebastiaan van Stijn f66c5a33d0 cli/command: TestHooksEnabled: fix test when config file is present
This test verifies the default behavior, but when running the test
in an environment that already has a ~/.docker/config.json present,
it may fail.

This patch updates the test to configure the config-directory to
point to an empty directory, making sure it's not affected by
state.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-02 16:06:07 +02:00
Sebastiaan van Stijn 3122b8e7f5 cli/command/network: fix error-message for cancelled prune
This error-message was updated in 7c722c08d0,
but looks like the typo was overlooked in review.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 23:44:00 +02:00
Sebastiaan van Stijn ce61ea015c cli/context/store: un-export LimitedReader
It was created for internal use, and is not part of the context-store
public API. It was introduced as part of the "zip import" functionality
added in 291e86289b. Initially it was
[non-exported][1], but during review, some suggestions were made to improve
the implementation, and the [suggested implementation][2] was based on
Go stdlib, but review overlooked that the implementation was now exported.

Let's un-export it, as this was (as outlined) never meant to be a public
type.

[1]: https://github.com/docker/cli/pull/1895#discussion_r287514522
[2]: https://github.com/docker/cli/pull/1895#discussion_r288688768

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 22:03:27 +02:00
Sebastiaan van Stijn c8f9187157 cli/config/configfile: deprecate ConfigFile.Experimental field
Configuration options for experimental CLI features were deprecated in
docker 19.03 (3172219932), and enabled by
default since docker 20.10 (977d3ae046).

This deprecates the corresponding field in the config-file.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 17:08:05 +02:00
Sebastiaan van Stijn 0dabdd1a0d cli/command: move TestExperimentalCLI to cli/config
This test was only testing whether we could load a legacy config-file that
contained the "experimental" (experimental CLI) option. Experimental cli
options are disabled since 977d3ae046 (20.10),
and now enabled by default, but we should not fail to start the cli if the
config-file contains the option.

Move the test to the config package, as it doesn't need the cli for this.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 17:06:39 +02:00
Sebastiaan van Stijn 33494921b8 Merge pull request #5980 from thaJeztah/container_use_subtests
cli/command/container: TestNewCreateCommandWithContentTrustErrors use subtests
2025-04-01 16:24:05 +02:00
Sebastiaan van Stijn c911ced1a4 Merge pull request #5979 from thaJeztah/fix_TestNewPortCommandOutput
cli/command/container: TestNewPortCommandOutput: remove DCT
2025-04-01 15:47:12 +02:00
Sebastiaan van Stijn d726a9b4cd Merge pull request #5978 from thaJeztah/cli_command_update_TestNewDockerCliAndOperators
cli/command: TestNewDockerCliAndOperators: update test without DCT
2025-04-01 15:46:32 +02:00
Sebastiaan van Stijn 4a3466eeb6 cli/command/container: TestNewCreateCommandWithContentTrustErrors use-subtests
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 14:53:51 +02:00
Sebastiaan van Stijn 12d637c1b5 cli/command/container: TestNewPortCommandOutput: remove DCT
This looks like a copy/paste from other tests, because this test
does not test anything related to docker content trust.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 14:48:02 +02:00
Sebastiaan van Stijn 8f9fec11ab cli/command: TestNewDockerCliAndOperators: update test without DCT
Use something more generic to verify the behavior.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 13:07:02 +02:00
Sebastiaan van Stijn 2328745f92 cli/command/image: deprecate RunPull and make internal
This function was exported in 812f113685
for use in other parts of the CLI, but it's now only used locally.

Make it internal again, as it was never designed to be exported. There
are no known external consumers of this function, but deprecating it
first, in case there are.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 09:33:04 +02:00
Sebastiaan van Stijn b557e37a49 cli/command/image: un-export RunSave
This function was exported in e43c7920ea
for use of "docker app", which is now deprecated. The signature of this
function also depended on a non-exported type, so it could not be used
externally.

Make it internal again, as it was never designed to be exported. There
are no known external consumers of this function.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 09:32:58 +02:00
Sebastiaan van Stijn 9b2479dca7 cli/command/image: un-export RunPush
This function was exported in e43c7920ea
for use of "docker app", which is now deprecated. The signature of this
function also depended on a non-exported type so it could not be used
externally.

Make it internal again, as it was never designed to be exported. There
are no known external consumers of this function.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-04-01 09:31:57 +02:00
Sebastiaan van Stijn 0c4912b0ec Merge pull request #5958 from thaJeztah/login_message
cli/command/registry: loginClientSide: use locally defined message
2025-03-31 14:46:18 +02:00
Paweł Gronowski 8e6de54d18 Merge pull request #5961 from thaJeztah/trust_remove_intermediate_var
cli/trust: GetNotaryRepository: remove intermediate var
2025-03-31 11:40:13 +00:00
Paweł Gronowski fc817a1367 Merge pull request #5970 from thaJeztah/swarm_completion_cleanup
cli/command/service: un-export CompletionFn
2025-03-31 11:39:37 +00:00
Sebastiaan van Stijn 491e8fdaf8 cli/registry/client: skip RepositoryInfo as intermediate
Remove RepositoryInfo as intermediate struct in some places; we want
to remove the use of this additional abstration. More changes are
needed to fully remove it, but chipping away its use in small bits.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-27 13:34:05 +01:00
Sebastiaan van Stijn 930173a2ab Merge pull request #5969 from thaJeztah/simplify_auth_fixed
cli/command: Reapply "remove uses of GetAuthConfigKey, ParseRepositoryInfo" and add test
2025-03-27 13:24:10 +01:00
Sebastiaan van Stijn 242422bbb3 cli/command/service: un-export CompletionFn
It's only used internally, and has no external consumers. Un-export
it, rename it to something more descriptive, and move it to a separate
file to align with other packages.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-27 09:59:29 +01:00
Sebastiaan van Stijn 0e32baf115 cli/command: fix regression in resolving auth from config
This was introduced in 79141ce5eb, which
was reverted in f596202125, and re-applied
in the previous commit.

Before this patch, saving credentials worked correctly;

    docker login -u thajeztah
    Password:
    Login Succeeded

    cat ~/.docker/config.json
    {
        "auths": {
            "https://index.docker.io/v1/": {
                "auth": "REDACTED"
            }
        }
    }

But when resolving the credentials, the credentials stored would not be found;

    docker pull -q thajeztah/private-test-image
    Error response from daemon: pull access denied for thajeztah/private-test-image, repository does not exist or may require 'docker login': denied: requested access to the resource is denied

With this patch applied:

    docker pull -q thajeztah/private-test-image
    docker.io/thajeztah/private-test-image:latest

Thanks to mtrmac (Miloslav Trmač) for spotting this mistake!

Suggested-by: Miloslav Trmač <mitr@redhat.com>
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-26 14:43:57 +01:00
Sebastiaan van Stijn 9f4165ccb8 Reapply "cli/command: remove uses of GetAuthConfigKey, ParseRepositoryInfo"
This reverts commit f596202125, and reapplies
79141ce5eb.

> cli/command: remove uses of GetAuthConfigKey, ParseRepositoryInfo
>
> Re-implement locally, based on the code in github.com/docker/docker/registry,
> but leaving out bits that are not used on the client-side, such as
> configuration of Mirrors, and configurable insecure-registry, which
> are not used on the client side.

This commit contains a regression due to a typo in `authConfigKey`;

    const authConfigKey = "https:/index.docker.io/v1/"

Which is missing a `/` after the scheme.

Which currently fails the TestRetrieveAuthTokenFromImage test.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-26 14:30:06 +01:00
Sebastiaan van Stijn 15b95beac7 cli/command: add unit-test for RetrieveAuthTokenFromImage
It's currently slower because it calls registry.ParseRepositoryInfo,
which does a DNS lookup for hostnames to determine if they're a loopback
address (and marked "insecure");

    go test -v -run TestRetrieveAuthTokenFromImage
    === RUN   TestRetrieveAuthTokenFromImage
    === RUN   TestRetrieveAuthTokenFromImage/no-prefix
    === RUN   TestRetrieveAuthTokenFromImage/docker.io
    === RUN   TestRetrieveAuthTokenFromImage/index.docker.io
    === RUN   TestRetrieveAuthTokenFromImage/registry-1.docker.io
    === RUN   TestRetrieveAuthTokenFromImage/registry.hub.docker.com
    === RUN   TestRetrieveAuthTokenFromImage/[::1]
    === RUN   TestRetrieveAuthTokenFromImage/[::1]:5000
    === RUN   TestRetrieveAuthTokenFromImage/127.0.0.1
    === RUN   TestRetrieveAuthTokenFromImage/localhost
    === RUN   TestRetrieveAuthTokenFromImage/localhost:5000
    === RUN   TestRetrieveAuthTokenFromImage/no-auth.example.com
    --- PASS: TestRetrieveAuthTokenFromImage (0.35s)
        --- PASS: TestRetrieveAuthTokenFromImage/no-prefix (0.00s)
        --- PASS: TestRetrieveAuthTokenFromImage/docker.io (0.00s)
        --- PASS: TestRetrieveAuthTokenFromImage/index.docker.io (0.00s)
        --- PASS: TestRetrieveAuthTokenFromImage/registry-1.docker.io (0.08s)
        --- PASS: TestRetrieveAuthTokenFromImage/registry.hub.docker.com (0.12s)
        --- PASS: TestRetrieveAuthTokenFromImage/[::1] (0.13s)
        --- PASS: TestRetrieveAuthTokenFromImage/[::1]:5000 (0.00s)
        --- PASS: TestRetrieveAuthTokenFromImage/127.0.0.1 (0.00s)
        --- PASS: TestRetrieveAuthTokenFromImage/localhost (0.00s)
        --- PASS: TestRetrieveAuthTokenFromImage/localhost:5000 (0.00s)
        --- PASS: TestRetrieveAuthTokenFromImage/no-auth.example.com (0.01s)
    PASS
    ok  	github.com/docker/cli/cli/command	1.367s

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-26 14:25:50 +01:00
albers ee275d5733 Improve completion of service scale args
Signed-off-by: albers <github@albersweb.de>
2025-03-25 21:46:44 +00:00
Sebastiaan van Stijn 1a14abb748 cli/command/registry: loginClientSide: use locally defined message
The "Service.Auth" pretended to return a message from the registry,
but the message returned is hard-coded in the registry package.

Remove its use to make this more transparent, and not to pretend
this is anything returned by the registry.

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-25 16:07:48 +01:00
Paweł Gronowski b8034c0ed7 Merge pull request #5962 from thaJeztah/bump_docker_28.0.3
build / prepare (push) Has been cancelled
build / build (push) Has been cancelled
build / bin-image (push) Has been cancelled
build / prepare-plugins (push) Has been cancelled
build / plugins (push) Has been cancelled
codeql / codeql (push) Has been cancelled
e2e / tests (alpine, 23, connhelper-ssh) (push) Has been cancelled
e2e / tests (alpine, 23, local) (push) Has been cancelled
e2e / tests (alpine, 26, connhelper-ssh) (push) Has been cancelled
e2e / tests (alpine, 26, local) (push) Has been cancelled
e2e / tests (alpine, 27, connhelper-ssh) (push) Has been cancelled
e2e / tests (alpine, 27, local) (push) Has been cancelled
e2e / tests (alpine, 28, connhelper-ssh) (push) Has been cancelled
e2e / tests (alpine, 28, local) (push) Has been cancelled
e2e / tests (debian, 23, connhelper-ssh) (push) Has been cancelled
e2e / tests (debian, 23, local) (push) Has been cancelled
e2e / tests (debian, 26, connhelper-ssh) (push) Has been cancelled
e2e / tests (debian, 26, local) (push) Has been cancelled
e2e / tests (debian, 27, connhelper-ssh) (push) Has been cancelled
e2e / tests (debian, 27, local) (push) Has been cancelled
e2e / tests (debian, 28, connhelper-ssh) (push) Has been cancelled
e2e / tests (debian, 28, local) (push) Has been cancelled
test / ctn (push) Has been cancelled
test / host (macos-13) (push) Has been cancelled
test / host (macos-14) (push) Has been cancelled
validate / validate (lint) (push) Has been cancelled
validate / validate (shellcheck) (push) Has been cancelled
validate / validate (update-authors) (push) Has been cancelled
validate / validate (validate-vendor) (push) Has been cancelled
validate / validate-md (push) Has been cancelled
validate / validate-make (manpages) (push) Has been cancelled
validate / validate-make (yamldocs) (push) Has been cancelled
vendor: github.com/docker/docker v28.0.3
2025-03-25 15:03:35 +00:00
Paweł Gronowski f596202125 Revert "cli/command: remove uses of GetAuthConfigKey, ParseRepositoryInfo"
This reverts commit 79141ce5eb.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-03-25 15:37:51 +01:00
Sebastiaan van Stijn ee2f787634 cli/config: update link to current version
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-25 14:37:59 +01:00
Sebastiaan van Stijn 60645d29f4 cli/trust: GetNotaryRepository: remove intermediate var
Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2025-03-25 11:48:41 +01:00
Paweł Gronowski 5a8120c809 container/run: Fix TestRunAttachTermination
Restore part of the code removed by 966b44183f
that closed the stream. It's required now because the Run command won't
finish before the output stream was processed by the caller.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-03-24 17:09:35 +01:00
Paweł Gronowski c27751fcfe container/run: Fix stdout/err truncation after container exit
Fix a regression introduced by 30c4637f03
which made the `docker run` command produce potentially truncated
stdout/stderr output.

Previous implementation stopped the content streaming as soon as the
container exited which would potentially truncate a long outputs.

This change fixes the issue by only canceling the IO stream immediately
if neither stdout nor stderr is attached.

Signed-off-by: Paweł Gronowski <pawel.gronowski@docker.com>
2025-03-24 17:09:32 +01:00