Script 'mail_helper' called by obssrc Hello community, here is the log from the commit of package docker for openSUSE:Factory checked in at 2021-03-10 08:46:22 ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Comparing /work/SRC/openSUSE:Factory/docker (Old) and /work/SRC/openSUSE:Factory/.docker.new.2378 (New) ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
Package is "docker" Wed Mar 10 08:46:22 2021 rev:111 rq:876333 version:20.10.5_ce Changes: -------- --- /work/SRC/openSUSE:Factory/docker/docker.changes 2021-02-16 22:41:32.622042551 +0100 +++ /work/SRC/openSUSE:Factory/.docker.new.2378/docker.changes 2021-03-10 08:46:24.830217561 +0100 @@ -1,0 +2,16 @@ +Wed Mar 3 00:49:58 UTC 2021 - Aleksa Sarai <asa...@suse.com> + +- Update to Docker 20.10.5-ce. See upstream changelog in the packaged + /usr/share/doc/packages/docker/CHANGELOG.md. bsc#1182947 +- Update runc dependency to 1.0.0~rc93. +- Remove upstreamed patches: + - cli-0001-Rename-bin-md2man-to-bin-go-md2man.patch +- Rebase patches: + * 0001-SECRETS-daemon-allow-directory-creation-in-run-secre.patch + * 0002-SECRETS-SUSE-implement-SUSE-container-secrets.patch + * 0003-PRIVATE-REGISTRY-add-private-registry-mirror-support.patch + * 0004-bsc1073877-apparmor-clobber-docker-default-profile-o.patch +- Switch version to use -ce suffix rather than _ce to avoid confusing other + tools. boo#1182476 + +------------------------------------------------------------------- Old: ---- cli-0001-Rename-bin-md2man-to-bin-go-md2man.patch docker-20.10.3_ce_46229ca1d815.tar.xz docker-cli-20.10.3_ce.tar.xz New: ---- docker-20.10.5_ce_363e9a88a11b.tar.xz docker-cli-20.10.5_ce.tar.xz ++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++ Other differences: ------------------ ++++++ docker.spec ++++++ --- /var/tmp/diff_new_pack.2eZUSf/_old 2021-03-10 08:46:25.690218448 +0100 +++ /var/tmp/diff_new_pack.2eZUSf/_new 2021-03-10 08:46:25.694218453 +0100 @@ -42,8 +42,8 @@ # helpfully injects into our build environment from the changelog). If you want # to generate a new git_commit_epoch, use this: # $ date --date="$(git show --format=fuller --date=iso $COMMIT_ID | grep -oP '(?<=^CommitDate: ).*')" '+%s' -%define git_version 46229ca1d815 -%define git_commit_epoch 1611869592 +%define git_version 363e9a88a11b +%define git_commit_epoch 1614234438 # We require a specific pin of libnetwork because it doesn't really do # versioning and minor version mismatches in libnetwork can break Docker @@ -56,7 +56,10 @@ %define proxy_builddir %{dist_builddir}/src/github.com/docker/libnetwork Name: %{realname}%{name_suffix} -Version: 20.10.3_ce +Version: 20.10.5_ce +# This "nice version" is so that docker --version gives a result that can be +# parsed by other people. boo#1182476 +%define nice_version 20.10.5-ce Release: 0 Summary: The Moby-project Linux container runtime License: Apache-2.0 @@ -89,8 +92,6 @@ Patch200: 0003-PRIVATE-REGISTRY-add-private-registry-mirror-support.patch # SUSE-BACKPORT: Backport of https://github.com/docker/docker/pull/37353. bsc#1073877 bsc#1099277 Patch300: 0004-bsc1073877-apparmor-clobber-docker-default-profile-o.patch -# SUSE-BACKPORT: Backport of https://github.com/docker/cli/pull/2888. -Patch301: cli-0001-Rename-bin-md2man-to-bin-go-md2man.patch BuildRequires: audit BuildRequires: bash-completion BuildRequires: ca-certificates @@ -117,7 +118,7 @@ Provides: docker-libnetwork%{name_suffix} = 0.7.0.2.%{version} # Required to actually run containers. We require the minimum version that is # pinned by Docker, but in order to avoid headaches we allow for updates. -Requires: runc >= 1.0.0~rc92 +Requires: runc >= 1.0.0~rc93 Requires: containerd >= 1.4.3 # Needed for --init support. We don't use "tini", we use our own implementation # which handles edge-cases better. @@ -264,8 +265,6 @@ mkdir -p %{cli_builddir} pushd %{cli_builddir} xz -dc %{SOURCE1} | tar -xof - --strip-components=1 -# https://github.com/docker/cli/pull/2888 -%patch301 -p1 popd # Extract the docker-libnetwork source in a subdir. @@ -297,7 +296,7 @@ # Specify all of the versioning information. We use SOURCE_DATE_EPOCH if it's # been injected by rpmbuild, otherwise we use the hardcoded git_commit_epoch # generated above. boo#1064781 -export VERSION="$(cat ./VERSION 2>/dev/null || echo '%{version}')" +export VERSION="%{nice_version}" export DOCKER_GITCOMMIT="%{git_version}" export GITCOMMIT="%{git_version}" export SOURCE_DATE_EPOCH="${SOURCE_DATE_EPOCH:-%{git_commit_epoch}}" ++++++ 0001-SECRETS-daemon-allow-directory-creation-in-run-secre.patch ++++++ --- /var/tmp/diff_new_pack.2eZUSf/_old 2021-03-10 08:46:25.714218473 +0100 +++ /var/tmp/diff_new_pack.2eZUSf/_new 2021-03-10 08:46:25.714218473 +0100 @@ -1,4 +1,4 @@ -From 1edf7a140c843cc6db85cdea298db19fee316dcb Mon Sep 17 00:00:00 2001 +From 6a5d238a42b8adc5d29bbd9bd688aa1034f5cdfd Mon Sep 17 00:00:00 2001 From: Aleksa Sarai <asa...@suse.de> Date: Wed, 8 Mar 2017 12:41:54 +1100 Subject: [PATCH 1/4] SECRETS: daemon: allow directory creation in /run/secrets @@ -70,5 +70,5 @@ return errors.Wrap(err, "error setting ownership for secret") } -- -2.30.0 +2.30.1 ++++++ 0002-SECRETS-SUSE-implement-SUSE-container-secrets.patch ++++++ --- /var/tmp/diff_new_pack.2eZUSf/_old 2021-03-10 08:46:25.734218493 +0100 +++ /var/tmp/diff_new_pack.2eZUSf/_new 2021-03-10 08:46:25.734218493 +0100 @@ -1,4 +1,4 @@ -From eaedebbcf735732c00e565ff6077f4374cc87519 Mon Sep 17 00:00:00 2001 +From bf083a6f80b204325673732944b53a447f9e4171 Mon Sep 17 00:00:00 2001 From: Aleksa Sarai <asa...@suse.de> Date: Wed, 8 Mar 2017 11:43:29 +1100 Subject: [PATCH 2/4] SECRETS: SUSE: implement SUSE container secrets @@ -451,5 +451,5 @@ + return nil +} -- -2.30.0 +2.30.1 ++++++ 0003-PRIVATE-REGISTRY-add-private-registry-mirror-support.patch ++++++ --- /var/tmp/diff_new_pack.2eZUSf/_old 2021-03-10 08:46:25.750218510 +0100 +++ /var/tmp/diff_new_pack.2eZUSf/_new 2021-03-10 08:46:25.754218514 +0100 @@ -1,4 +1,4 @@ -From aa173dd56730552524ab35d74acbe61709c732e2 Mon Sep 17 00:00:00 2001 +From 10d0381bf317221167af0930c552a8b27c7861a4 Mon Sep 17 00:00:00 2001 From: Valentin Rothberg <vrothb...@suse.com> Date: Mon, 2 Jul 2018 13:37:34 +0200 Subject: [PATCH 3/4] PRIVATE-REGISTRY: add private-registry mirror support @@ -1142,5 +1142,5 @@ endpoints = []APIEndpoint{ -- -2.30.0 +2.30.1 ++++++ 0004-bsc1073877-apparmor-clobber-docker-default-profile-o.patch ++++++ --- /var/tmp/diff_new_pack.2eZUSf/_old 2021-03-10 08:46:25.766218526 +0100 +++ /var/tmp/diff_new_pack.2eZUSf/_new 2021-03-10 08:46:25.766218526 +0100 @@ -1,4 +1,4 @@ -From eb4e0b351b4bb229bfd5fd3ed57d3c35040265e0 Mon Sep 17 00:00:00 2001 +From 8cf5f05b8bcb5588bec92d5732e81f26fa632fce Mon Sep 17 00:00:00 2001 From: Aleksa Sarai <asa...@suse.de> Date: Fri, 29 Jun 2018 17:59:30 +1000 Subject: [PATCH 4/4] bsc1073877: apparmor: clobber docker-default profile on @@ -69,7 +69,7 @@ return nil } diff --git a/daemon/daemon.go b/daemon/daemon.go -index 794ff9712d08..f9e727b348c5 100644 +index 3d8cca288010..62d3859cff8c 100644 --- a/daemon/daemon.go +++ b/daemon/daemon.go @@ -855,8 +855,9 @@ func NewDaemon(ctx context.Context, config *config.Config, pluginStore *plugin.S @@ -85,5 +85,5 @@ } -- -2.30.0 +2.30.1 ++++++ _service ++++++ --- /var/tmp/diff_new_pack.2eZUSf/_old 2021-03-10 08:46:25.830218593 +0100 +++ /var/tmp/diff_new_pack.2eZUSf/_new 2021-03-10 08:46:25.830218593 +0100 @@ -3,16 +3,16 @@ <param name="url">https://github.com/moby/moby.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="versionformat">20.10.3_ce_%h</param> - <param name="revision">v20.10.3</param> + <param name="versionformat">20.10.5_ce_%h</param> + <param name="revision">v20.10.5</param> <param name="filename">docker</param> </service> <service name="tar_scm" mode="disabled"> <param name="url">https://github.com/docker/cli.git</param> <param name="scm">git</param> <param name="exclude">.git</param> - <param name="versionformat">20.10.3_ce</param> - <param name="revision">v20.10.3</param> + <param name="versionformat">20.10.5_ce</param> + <param name="revision">v20.10.5</param> <param name="filename">docker-cli</param> </service> <service name="tar_scm" mode="disabled"> ++++++ docker-20.10.3_ce_46229ca1d815.tar.xz -> docker-20.10.5_ce_363e9a88a11b.tar.xz ++++++ /work/SRC/openSUSE:Factory/docker/docker-20.10.3_ce_46229ca1d815.tar.xz /work/SRC/openSUSE:Factory/.docker.new.2378/docker-20.10.5_ce_363e9a88a11b.tar.xz differ: char 15, line 1 ++++++ docker-cli-20.10.3_ce.tar.xz -> docker-cli-20.10.5_ce.tar.xz ++++++ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/cli/command/image/build_buildkit.go new/docker-cli-20.10.5_ce/cli/command/image/build_buildkit.go --- old/docker-cli-20.10.3_ce/cli/command/image/build_buildkit.go 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/cli/command/image/build_buildkit.go 2021-03-02 18:58:58.000000000 +0100 @@ -78,7 +78,7 @@ if options.dockerfileFromStdin() { return errStdinConflict } - rc, isArchive, err := build.DetectArchiveReader(os.Stdin) + rc, isArchive, err := build.DetectArchiveReader(dockerCli.In()) if err != nil { return err } @@ -98,7 +98,7 @@ case isLocalDir(options.context): contextDir = options.context if options.dockerfileFromStdin() { - dockerfileReader = os.Stdin + dockerfileReader = dockerCli.In() } else if options.dockerfileName != "" { dockerfileName = filepath.Base(options.dockerfileName) dockerfileDir = filepath.Dir(options.dockerfileName) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/cli/command/registry/login.go new/docker-cli-20.10.5_ce/cli/command/registry/login.go --- old/docker-cli-20.10.3_ce/cli/command/registry/login.go 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/cli/command/registry/login.go 2021-03-02 18:58:58.000000000 +0100 @@ -111,11 +111,12 @@ serverAddress = authServer } - var err error - var authConfig *types.AuthConfig var response registrytypes.AuthenticateOKBody isDefaultRegistry := serverAddress == authServer - authConfig, err = command.GetDefaultAuthConfig(dockerCli, opts.user == "" && opts.password == "", serverAddress, isDefaultRegistry) + authConfig, err := command.GetDefaultAuthConfig(dockerCli, opts.user == "" && opts.password == "", serverAddress, isDefaultRegistry) + if authConfig == nil { + authConfig = &types.AuthConfig{} + } if err == nil && authConfig.Username != "" && authConfig.Password != "" { response, err = loginWithCredStoreCreds(ctx, dockerCli, authConfig) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/cli/command/registry.go new/docker-cli-20.10.5_ce/cli/command/registry.go --- old/docker-cli-20.10.3_ce/cli/command/registry.go 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/cli/command/registry.go 2021-03-02 18:58:58.000000000 +0100 @@ -63,6 +63,9 @@ indexServer := registry.GetAuthConfigKey(index) isDefaultRegistry := indexServer == ElectAuthServer(context.Background(), cli) authConfig, err := GetDefaultAuthConfig(cli, true, indexServer, isDefaultRegistry) + if authConfig == nil { + authConfig = &types.AuthConfig{} + } if err != nil { fmt.Fprintf(cli.Err(), "Unable to retrieve stored credentials for %s, error: %s.\n", indexServer, err) } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/cli/command/service/opts.go new/docker-cli-20.10.5_ce/cli/command/service/opts.go --- old/docker-cli-20.10.3_ce/cli/command/service/opts.go 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/cli/command/service/opts.go 2021-03-02 18:58:58.000000000 +0100 @@ -165,7 +165,7 @@ } func (opts updateOptions) updateConfig(flags *pflag.FlagSet) *swarm.UpdateConfig { - if !anyChanged(flags, flagUpdateParallelism, flagUpdateDelay, flagUpdateMonitor, flagUpdateFailureAction, flagUpdateMaxFailureRatio) { + if !anyChanged(flags, flagUpdateParallelism, flagUpdateDelay, flagUpdateMonitor, flagUpdateFailureAction, flagUpdateMaxFailureRatio, flagUpdateOrder) { return nil } @@ -194,7 +194,7 @@ } func (opts updateOptions) rollbackConfig(flags *pflag.FlagSet) *swarm.UpdateConfig { - if !anyChanged(flags, flagRollbackParallelism, flagRollbackDelay, flagRollbackMonitor, flagRollbackFailureAction, flagRollbackMaxFailureRatio) { + if !anyChanged(flags, flagRollbackParallelism, flagRollbackDelay, flagRollbackMonitor, flagRollbackFailureAction, flagRollbackMaxFailureRatio, flagRollbackOrder) { return nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/cli/command/service/opts_test.go new/docker-cli-20.10.5_ce/cli/command/service/opts_test.go --- old/docker-cli-20.10.3_ce/cli/command/service/opts_test.go 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/cli/command/service/opts_test.go 2021-03-02 18:58:58.000000000 +0100 @@ -289,6 +289,22 @@ assert.Check(t, is.DeepEqual(service.RollbackConfig, expected.RollbackConfig)) } +func TestToServiceUpdateRollbackOrder(t *testing.T) { + flags := newCreateCommand(nil).Flags() + flags.Set("update-order", "start-first") + flags.Set("rollback-order", "start-first") + + o := newServiceOptions() + o.mode = "replicated" + o.update = updateOptions{order: "start-first"} + o.rollback = updateOptions{order: "start-first"} + + service, err := o.ToService(context.Background(), &fakeClient{}, flags) + assert.NilError(t, err) + assert.Check(t, is.Equal(service.UpdateConfig.Order, o.update.order)) + assert.Check(t, is.Equal(service.RollbackConfig.Order, o.rollback.order)) +} + func TestToServiceMaxReplicasGlobalModeConflict(t *testing.T) { opt := serviceOptions{ mode: "global", diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/cli/command/service/progress/progress.go new/docker-cli-20.10.5_ce/cli/command/service/progress/progress.go --- old/docker-cli-20.10.3_ce/cli/command/service/progress/progress.go 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/cli/command/service/progress/progress.go 2021-03-02 18:58:58.000000000 +0100 @@ -99,6 +99,7 @@ convergedAt time.Time monitor = 5 * time.Second rollback bool + message *progress.Progress ) for { @@ -140,8 +141,9 @@ return fmt.Errorf("service rollback paused: %s", service.UpdateStatus.Message) case swarm.UpdateStateRollbackCompleted: if !converged { - return fmt.Errorf("service rolled back: %s", service.UpdateStatus.Message) + message = &progress.Progress{ID: "rollback", Message: service.UpdateStatus.Message} } + rollback = true } } if converged && time.Since(convergedAt) >= monitor { @@ -149,7 +151,9 @@ ID: "verify", Action: "Service converged", }) - + if message != nil { + progressOut.WriteProgress(*message) + } return nil } diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/cli/config/config.go new/docker-cli-20.10.5_ce/cli/config/config.go --- old/docker-cli-20.10.3_ce/cli/config/config.go 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/cli/config/config.go 2021-03-02 18:58:58.000000000 +0100 @@ -26,15 +26,29 @@ var ( initConfigDir sync.Once configDir string + homeDir string ) +// resetHomeDir is used in testing to resets the "homeDir" package variable to +// force re-lookup of the home directory between tests. +func resetHomeDir() { + homeDir = "" +} + +func getHomeDir() string { + if homeDir == "" { + homeDir = homedir.Get() + } + return homeDir +} + func setConfigDir() { if configDir != "" { return } configDir = os.Getenv("DOCKER_CONFIG") if configDir == "" { - configDir = filepath.Join(homedir.Get(), configFileDir) + configDir = filepath.Join(getHomeDir(), configFileDir) } } @@ -109,11 +123,7 @@ } // Can't find latest config file so check for the old one - home, err := os.UserHomeDir() - if err != nil { - return configFile, errors.Wrap(err, oldConfigfile) - } - filename = filepath.Join(home, oldConfigfile) + filename = filepath.Join(getHomeDir(), oldConfigfile) if file, err := os.Open(filename); err == nil { defer file.Close() if err := configFile.LegacyLoadFromReader(file); err != nil { diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/cli/config/config_test.go new/docker-cli-20.10.5_ce/cli/config/config_test.go --- old/docker-cli-20.10.3_ce/cli/config/config_test.go 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/cli/config/config_test.go 2021-03-02 18:58:58.000000000 +0100 @@ -115,6 +115,7 @@ email`: "Invalid auth configuration file", } + resetHomeDir() tmpHome, err := ioutil.TempDir("", "config-test") assert.NilError(t, err) defer os.RemoveAll(tmpHome) @@ -131,6 +132,7 @@ } func TestOldValidAuth(t *testing.T) { + resetHomeDir() tmpHome, err := ioutil.TempDir("", "config-test") assert.NilError(t, err) defer os.RemoveAll(tmpHome) @@ -165,6 +167,7 @@ } func TestOldJSONInvalid(t *testing.T) { + resetHomeDir() tmpHome, err := ioutil.TempDir("", "config-test") assert.NilError(t, err) defer os.RemoveAll(tmpHome) @@ -184,6 +187,7 @@ } func TestOldJSON(t *testing.T) { + resetHomeDir() tmpHome, err := ioutil.TempDir("", "config-test") assert.NilError(t, err) defer os.RemoveAll(tmpHome) diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/contrib/completion/bash/docker new/docker-cli-20.10.5_ce/contrib/completion/bash/docker --- old/docker-cli-20.10.3_ce/contrib/completion/bash/docker 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/contrib/completion/bash/docker 2021-03-02 18:58:58.000000000 +0100 @@ -935,7 +935,7 @@ # awslogs does not implement the $common_options2. local awslogs_options="$common_options1 awslogs-create-group awslogs-credentials-endpoint awslogs-datetime-format awslogs-group awslogs-multiline-pattern awslogs-region awslogs-stream tag" - local fluentd_options="$common_options1 $common_options2 fluentd-address fluentd-async-connect fluentd-buffer-limit fluentd-retry-wait fluentd-max-retries fluentd-sub-second-precision tag" + local fluentd_options="$common_options1 $common_options2 fluentd-address fluentd-async fluentd-buffer-limit fluentd-request-ack fluentd-retry-wait fluentd-max-retries fluentd-sub-second-precision tag" local gcplogs_options="$common_options1 $common_options2 gcp-log-cmd gcp-meta-id gcp-meta-name gcp-meta-zone gcp-project" local gelf_options="$common_options1 $common_options2 gelf-address gelf-compression-level gelf-compression-type gelf-tcp-max-reconnect gelf-tcp-reconnect-delay tag" local journald_options="$common_options1 $common_options2 tag" @@ -1955,6 +1955,7 @@ --pid --pids-limit --publish -p + --pull --restart --runtime --security-opt @@ -2153,6 +2154,10 @@ esac return ;; + --pull) + COMPREPLY=( $( compgen -W 'always missing never' -- "$cur" ) ) + return + ;; --runtime) __docker_complete_runtimes return @@ -2548,6 +2553,7 @@ --ip-forward=false --ip-masq=false --iptables=false + --ip6tables --ipv6 --live-restore --no-new-privileges @@ -3601,7 +3607,7 @@ return ;; mode) - COMPREPLY=( $( compgen -W "global replicated" -- "${cur##*=}" ) ) + COMPREPLY=( $( compgen -W "global global-job replicated replicated-job" -- "${cur##*=}" ) ) return ;; name) @@ -3731,6 +3737,7 @@ --limit-pids --log-driver --log-opt + --max-replicas --replicas --replicas-max-per-node --reserve-cpu @@ -3804,7 +3811,7 @@ return ;; --mode) - COMPREPLY=( $( compgen -W "global replicated" -- "$cur" ) ) + COMPREPLY=( $( compgen -W "global global-job replicated replicated-job" -- "$cur" ) ) return ;; esac @@ -4348,6 +4355,9 @@ __docker_complete_nodes --cur "${cur##*=}" --id return ;; + label|node.label) + return + ;; membership) COMPREPLY=( $( compgen -W "accepted pending" -- "${cur##*=}" ) ) return @@ -4364,7 +4374,7 @@ case "$prev" in --filter|-f) - COMPREPLY=( $( compgen -W "id label membership name role" -S = -- "$cur" ) ) + COMPREPLY=( $( compgen -W "id label membership name node.label role" -S = -- "$cur" ) ) __docker_nospace return ;; diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/contrib/completion/zsh/_docker new/docker-cli-20.10.5_ce/contrib/completion/zsh/_docker --- old/docker-cli-20.10.3_ce/contrib/completion/zsh/_docker 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/contrib/completion/zsh/_docker 2021-03-02 18:58:58.000000000 +0100 @@ -1343,7 +1343,7 @@ ;; esac else - opts=('id' 'label' 'membership' 'name' 'role') + opts=('id' 'label' 'membership' 'name' 'node.label' 'role') _describe -t filter-opts "filter options" opts -qS "=" && ret=0 fi @@ -2544,6 +2544,82 @@ # EO volume +# BO context + +__docker_complete_contexts() { + [[ $PREFIX = -* ]] && return 1 + integer ret=1 + declare -a contexts + + contexts=(${(f)${:-"$(_call_program commands docker $docker_options context ls -q)"$'\n'}}) + + _describe -t context-list "context" contexts && ret=0 + return ret +} + +__docker_context_commands() { + local -a _docker_context_subcommands + _docker_context_subcommands=( + "create:Create new context" + "inspect:Display detailed information on one or more contexts" + "list:List available contexts" + "rm:Remove one or more contexts" + "show:Print the current context" + "update:Update a context" + "use:Set the default context" + ) + _describe -t docker-context-commands "docker context command" _docker_context_subcommands +} + +__docker_context_subcommand() { + local -a _command_args opts_help + local expl help="--help" + integer ret=1 + + opts_help=("(: -)--help[Print usage]") + + case "$words[1]" in + (create) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--default-stack-orchestrator=[Default orchestrator for stack operations to use with this context]:default-stack-orchestrator:(swarm kubernetes all)" \ + "($help)--description=[Description of the context]:description:" \ + "($help)--docker=[Set the docker endpoint]:docker:" \ + "($help)--kubernetes=[Set the kubernetes endpoint]:kubernetes:" \ + "($help)--from=[Create context from a named context]:from:__docker_complete_contexts" \ + "($help -):name: " && ret=0 + ;; + (use) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:context:__docker_complete_contexts" && ret=0 + ;; + (inspect) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:context:__docker_complete_contexts" && ret=0 + ;; + (rm) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -)1:context:__docker_complete_contexts" && ret=0 + ;; + (update) + _arguments $(__docker_arguments) \ + $opts_help \ + "($help)--default-stack-orchestrator=[Default orchestrator for stack operations to use with this context]:default-stack-orchestrator:(swarm kubernetes all)" \ + "($help)--description=[Description of the context]:description:" \ + "($help)--docker=[Set the docker endpoint]:docker:" \ + "($help)--kubernetes=[Set the kubernetes endpoint]:kubernetes:" \ + "($help -):name:" && ret=0 + ;; + esac + + return ret +} + +# EO context + __docker_caching_policy() { oldp=( "$1"(Nmh+1) ) # 1 hour (( $#oldp )) @@ -2631,6 +2707,23 @@ ;; esac ;; + (context) + local curcontext="$curcontext" state + _arguments $(__docker_arguments) \ + $opts_help \ + "($help -): :->command" \ + "($help -)*:: :->option-or-argument" && ret=0 + + case $state in + (command) + __docker_context_commands && ret=0 + ;; + (option-or-argument) + curcontext=${curcontext%:*:*}:docker-${words[-1]}: + __docker_context_subcommand && ret=0 + ;; + esac + ;; (daemon) _arguments $(__docker_arguments) \ $opts_help \ diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/docs/deprecated.md new/docker-cli-20.10.5_ce/docs/deprecated.md --- old/docker-cli-20.10.3_ce/docs/deprecated.md 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/docs/deprecated.md 2021-03-02 18:58:58.000000000 +0100 @@ -52,6 +52,7 @@ -----------|------------------------------------------------------------------------------------------------------------------------------------|------------|------------ Deprecated | [Pulling images from non-compliant image registries](#pulling-images-from-non-compliant-image-registries) | v20.10 | - Deprecated | [Linux containers on Windows (LCOW)](#linux-containers-on-windows-lcow-experimental) | v20.10 | - +Deprecated | [BLKIO weight options with cgroups v1](#blkio-weight-options???with-cgroups-v1) | v20.10 | - Deprecated | [Kernel memory limit](#kernel-memory-limit) | v20.10 | - Deprecated | [Classic Swarm and overlay networks using external key/value stores](#classic-swarm-and-overlay-networks-using-cluster-store) | v20.10 | - Deprecated | [Support for the legacy `~/.dockercfg` configuration file for authentication](#support-for-legacy-dockercfg-configuration-files) | v20.10 | - @@ -140,6 +141,16 @@ Developers who want to run Linux workloads on a Windows host are encouraged to use [Docker Desktop with WSL2](https://docs.docker.com/docker-for-windows/wsl/) instead. +### BLKIO weight options with cgroups v1 + +**Deprecated in Release: v20.10** + +Specifying blkio weight (`docker run --blkio-weight` and `docker run --blkio-weight-device`) +is now marked as deprecated when using cgroups v1 because the corresponding features +were [removed in Linux kernel v5.0 and up](https://github.com/torvalds/linux/commit/f382fb0bcef4c37dc049e9f6963e3baf204d815c). +When using cgroups v2, the `--blkio-weight` options are implemented using +[`io.weight](https://github.com/torvalds/linux/blob/v5.0/Documentation/admin-guide/cgroup-v2.rst#io). + ### Kernel memory limit **Deprecated in Release: v20.10** diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/docs/reference/commandline/node_ls.md new/docker-cli-20.10.5_ce/docs/reference/commandline/node_ls.md --- old/docker-cli-20.10.3_ce/docs/reference/commandline/node_ls.md 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/docs/reference/commandline/node_ls.md 2021-03-02 18:58:58.000000000 +0100 @@ -60,6 +60,7 @@ * [id](#id) * [label](#label) +* [node.label](#nodelabel) * [membership](#membership) * [name](#name) * [role](#role) @@ -77,7 +78,10 @@ #### label -The `label` filter matches nodes based on engine labels and on the presence of a `label` alone or a `label` and a value. Node labels are currently not used for filtering. +The `label` filter matches nodes based on engine labels and on the presence of a +`label` alone or a `label` and a value. Engine labels are configured in +the [daemon configuration](dockerd.md#daemon-configuration-file). To filter on +Swarm `node` labels, use [`node.label` instead](#nodelabel). The following filter matches nodes with the `foo` label regardless of its value. @@ -88,6 +92,42 @@ 1bcef6utixb0l0ca7gxuivsj0 swarm-worker2 Ready Active ``` +#### node.label + +The `node.label` filter matches nodes based on node labels and on the presence +of a `node.label` alone or a `node.label` and a value. + +The following filter updates nodes to have a `region` node label: + +```console +$ docker node update --label-add region=region-a swarm-test-01 +$ docker node update --label-add region=region-a swarm-test-02 +$ docker node update --label-add region=region-b swarm-test-03 +$ docker node update --label-add region=region-b swarm-test-04 +``` + +Show all nodes that have a `region` node label set: + +```console +$ docker node ls --filter node.label=region + +ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION +yg550ettvsjn6g6t840iaiwgb * swarm-test-01 Ready Active Leader 20.10.2 +2lm9w9kbepgvkzkkeyku40e65 swarm-test-02 Ready Active Reachable 20.10.2 +hc0pu7ntc7s4uvj4pv7z7pz15 swarm-test-03 Ready Active Reachable 20.10.2 +n41b2cijmhifxxvz56vwrs12q swarm-test-04 Ready Active 20.10.2 +``` + +Show all nodes that have a `region` node label, with value `region-a`: + +```console +$ docker node ls --filter node.label=region=region-a + +ID HOSTNAME STATUS AVAILABILITY MANAGER STATUS ENGINE VERSION +yg550ettvsjn6g6t840iaiwgb * swarm-test-01 Ready Active Leader 20.10.2 +2lm9w9kbepgvkzkkeyku40e65 swarm-test-02 Ready Active Reachable 20.10.2 +``` + #### membership The `membership` filter matches nodes based on the presence of a `membership` and a value diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/docs/reference/commandline/push.md new/docker-cli-20.10.5_ce/docs/reference/commandline/push.md --- old/docker-cli-20.10.3_ce/docs/reference/commandline/push.md 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/docs/reference/commandline/push.md 2021-03-02 18:58:58.000000000 +0100 @@ -76,7 +76,7 @@ ### Push all tags of an image -Use the `-a` (or `--all-tags`) option to push To push all tags of a local image. +Use the `-a` (or `--all-tags`) option to push all tags of a local image. The following example creates multiple tags for an image, and pushes all those tags to Docker Hub. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/docs/reference/run.md new/docker-cli-20.10.5_ce/docs/reference/run.md --- old/docker-cli-20.10.3_ce/docs/reference/run.md 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/docs/reference/run.md 2021-03-02 18:58:58.000000000 +0100 @@ -1,6 +1,8 @@ --- description: "Configure containers at runtime" keywords: "docker, run, configure, runtime" +redirect_from: +- /reference/run/ --- <!-- This file is maintained within the docker/cli GitHub @@ -1738,7 +1740,7 @@ The `container-dest` must always be an absolute path such as `/src/docs`. The `host-src` can either be an absolute path or a `name` value. If you -supply an absolute path for the `host-dir`, Docker bind-mounts to the path +supply an absolute path for the `host-src`, Docker bind-mounts to the path you specify. If you supply a `name`, Docker creates a named volume by that `name`. A `name` value must start with an alphanumeric character, diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/man/docker-run.1.md new/docker-cli-20.10.5_ce/man/docker-run.1.md --- old/docker-cli-20.10.3_ce/man/docker-run.1.md 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/man/docker-run.1.md 2021-03-02 18:58:58.000000000 +0100 @@ -504,13 +504,13 @@ **--network**=*type* Set the Network mode for the container. Supported values are: -| Value | Description | -|:----------------------------|:-----------------------------------------------------------------------------------------| -| **none** | No networking in the container. | -| **bridge** | Connect the container to the default Docker bridge via veth interfaces. | -| **host** | Use the host's network stack inside the container. | -| **container:**_name_|_id_ | Use the network stack of another container, specified via its _name_ or _id_. | -| _network-name_|_network-id_ | Connects the container to a user created network (using `docker network create` command) | +| Value | Description | +|:-----------------------------|:-----------------------------------------------------------------------------------------| +| **none** | No networking in the container. | +| **bridge** | Connect the container to the default Docker bridge via veth interfaces. | +| **host** | Use the host's network stack inside the container. | +| **container:**_name_\|_id_ | Use the network stack of another container, specified via its _name_ or _id_. | +| _network-name_\|_network-id_ | Connects the container to a user created network (using `docker network create` command) | Default is **bridge**. diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/man/md2man-all.sh new/docker-cli-20.10.5_ce/man/md2man-all.sh --- old/docker-cli-20.10.3_ce/man/md2man-all.sh 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/man/md2man-all.sh 2021-03-02 18:58:58.000000000 +0100 @@ -18,5 +18,5 @@ continue fi mkdir -p "./man${num}" - md2man -in "$FILE" -out "./man${num}/${name}" + go-md2man -in "$FILE" -out "./man${num}/${name}" done diff -urN '--exclude=CVS' '--exclude=.cvsignore' '--exclude=.svn' '--exclude=.svnignore' old/docker-cli-20.10.3_ce/scripts/docs/generate-man.sh new/docker-cli-20.10.5_ce/scripts/docs/generate-man.sh --- old/docker-cli-20.10.3_ce/scripts/docs/generate-man.sh 2021-01-28 23:27:59.000000000 +0100 +++ new/docker-cli-20.10.5_ce/scripts/docs/generate-man.sh 2021-03-02 18:58:58.000000000 +0100 @@ -4,9 +4,9 @@ mkdir -p ./man/man1 -if ! command -v md2man &> /dev/null; then +if ! command -v go-md2man &> /dev/null; then # yay, go install creates a binary named "v2" ??\_(???)_/?? - go build -o "/go/bin/md2man" ./vendor/github.com/cpuguy83/go-md2man/v2 + go build -o "/go/bin/go-md2man" ./vendor/github.com/cpuguy83/go-md2man/v2 fi # Generate man pages from cobra commands