DockerCLI/man/src
Sebastiaan van Stijn 9e620e990f
implement docker push -a/--all-tags
The `docker push` command up until [v0.9.1](https://github.com/moby/moby/blob/v0.9.1/api/client.go#L998)
always pushed all tags of a given image, so `docker push foo/bar` would push (e.g.)
all of  `foo/bar:latest`, `foo:/bar:v1`, `foo/bar:v1.0.0`.

Pushing all tags of an image was not desirable in many case, so docker v0.10.0
enhanced `docker push` to optionally specify a tag to push (`docker push foo/bar:v1`)
(see https://github.com/moby/moby/issues/3411 and the pull request that implemented
this: https://github.com/moby/moby/pull/4948).

This behavior exists up until today, and is confusing, because unlike other commands,
`docker push` does not default to use the `:latest` tag when omitted, but instead
makes it push "all tags of the image"

For example, in the following situation;

```
docker images

REPOSITORY          TAG                        IMAGE ID            CREATED             SIZE
thajeztah/myimage   latest                     b534869c81f0        41 hours ago        1.22MB
```

Running `docker push thajeztah/myimage` seemingly does the expected behavior (it
pushes `thajeztah/myimage:latest` to Docker Hub), however, it does not so for the
reason expected (`:latest` being the default tag), but because `:latest` happens
to be the only tag present for the `thajeztah/myimage` image.

If another tag exists for the image:

```
docker images

REPOSITORY          TAG                        IMAGE ID            CREATED             SIZE
thajeztah/myimage   latest                     b534869c81f0        41 hours ago        1.22MB
thajeztah/myimage   v1.0.0                     b534869c81f0        41 hours ago        1.22MB
```

Running the same command (`docker push thajeztah/myimage`) will push _both_ images
to Docker Hub.

> Note that the behavior described above is currently not (clearly) documented;
> the `docker push` reference documentation (https://docs.docker.com/engine/reference/commandline/push/)
does not mention that omitting the tag will push all tags

This patch changes the default behavior, and if no tag is specified, `:latest` is
assumed. To push _all_ tags, a new flag (`-a` / `--all-tags`) is added, similar
to the flag that's present on `docker pull`.

With this change:

- `docker push myname/myimage` will be the equivalent of `docker push myname/myimage:latest`
- to push all images, the user needs to set a flag (`--all-tags`), so `docker push --all-tags myname/myimage:latest`

Signed-off-by: Sebastiaan van Stijn <github@gone.nl>
2020-01-28 16:21:06 +01:00
..
container Fix phrasing when referring to the freezer cgroup 2019-08-18 13:55:20 +02:00
image implement docker push -a/--all-tags 2020-01-28 16:21:06 +01:00
network fixed typo -- Signed-off-by: Lee Gaines <eightlimbed@gmail.com> 2018-05-08 14:46:42 -07:00
plugin fix some typos from module contrib to man 2017-06-02 00:10:56 +00:00
system Rework `docker info` output to be more like `docker version` 2019-01-25 14:46:26 +00:00
volume Typo in documentation of volume create 2019-11-15 16:15:24 +01:00
attach.md Read long description from a file. 2017-06-02 00:10:47 +00:00
commit.md Read long description from a file. 2017-06-02 00:10:47 +00:00
cp.md Read long description from a file. 2017-06-02 00:10:47 +00:00
create.md Read long description from a file. 2017-06-02 00:10:47 +00:00
diff.md Read long description from a file. 2017-06-02 00:10:47 +00:00
events.md Read long description from a file. 2017-06-02 00:10:47 +00:00
exec.md Read long description from a file. 2017-06-02 00:10:47 +00:00
export.md Read long description from a file. 2017-06-02 00:10:47 +00:00
history.md Read long description from a file. 2017-06-02 00:10:47 +00:00
images.md Read long description from a file. 2017-06-02 00:10:47 +00:00
import.md Read long description from a file. 2017-06-02 00:10:47 +00:00
info.md Read long description from a file. 2017-06-02 00:10:47 +00:00
inspect.md Read long description from a file. 2017-06-02 00:10:47 +00:00
kill.md Read long description from a file. 2017-06-02 00:10:47 +00:00
load.md Read long description from a file. 2017-06-02 00:10:47 +00:00
login.md Fix incorrect alias and URL 2017-06-02 00:10:48 +00:00
logout.md Read long description from a file. 2017-06-02 00:10:47 +00:00
logs.md Read long description from a file. 2017-06-02 00:10:47 +00:00
pause.md Read long description from a file. 2017-06-02 00:10:47 +00:00
port.md Read long description from a file. 2017-06-02 00:10:47 +00:00
ps.md Read long description from a file. 2017-06-02 00:10:47 +00:00
pull.md Read long description from a file. 2017-06-02 00:10:47 +00:00
push.md Read long description from a file. 2017-06-02 00:10:47 +00:00
rename.md Read long description from a file. 2017-06-02 00:10:47 +00:00
restart.md Read long description from a file. 2017-06-02 00:10:47 +00:00
rm.md Read long description from a file. 2017-06-02 00:10:47 +00:00
rmi.md Read long description from a file. 2017-06-02 00:10:47 +00:00
save.md Read long description from a file. 2017-06-02 00:10:47 +00:00
search.md Read long description from a file. 2017-06-02 00:10:47 +00:00
start.md Read long description from a file. 2017-06-02 00:10:47 +00:00
stats.md Read long description from a file. 2017-06-02 00:10:47 +00:00
stop.md Read long description from a file. 2017-06-02 00:10:47 +00:00
tag.md Read long description from a file. 2017-06-02 00:10:47 +00:00
top.md Read long description from a file. 2017-06-02 00:10:47 +00:00
unpause.md Fix incorrect alias and URL 2017-06-02 00:10:48 +00:00
update.md Read long description from a file. 2017-06-02 00:10:47 +00:00
version.md Read long description from a file. 2017-06-02 00:10:47 +00:00
volume.md Read long description from a file. 2017-06-02 00:10:47 +00:00
wait.md Read long description from a file. 2017-06-02 00:10:47 +00:00