ContainerCollection.run sets tag to "latest" if not set. #2656
Add this suggestion to a batch that can be applied as a single commit.
This suggestion is invalid because no changes were made to the code.
Suggestions cannot be applied while the pull request is closed.
Suggestions cannot be applied while viewing a subset of changes.
Only one suggestion per line can be applied in a batch.
Add this suggestion to a batch that can be applied as a single commit.
Applying suggestions on deleted lines is not supported.
You must change the existing code in this line in order to create a valid suggestion.
Outdated suggestions cannot be applied.
This suggestion has been applied or marked resolved.
Suggestions cannot be applied from pending reviews.
Suggestions cannot be applied on multi-line comments.
Suggestions cannot be applied while the pull request is queued to merge.
Suggestion cannot be applied right now. Please check back later.
This fixes issue #2545.
The issue is when you call
client.containers.run("some-image")
andsome-image:latest
doesn't exist locally.run
will callImageCollection.pull
without passing a tag:docker-py/docker/models/containers.py
Lines 808 to 814 in 2b1c7eb
Since the tag doesn't exist,
pull
will pull all tags from the repository:docker-py/docker/models/images.py
Lines 398 to 403 in 2b1c7eb
This behavior of
run
seems unintuitive since it will only run thelatest
image and the rest are not needed.This patch only modifies
run
. I felt like it might be preferable forpull
to mimicdocker pull
, and only pull all tags if the user explicitly asks for that with a keyword arg likeall=True
. However, the current behavior ofpull
is documented, so that would be a major breaking change.I also considered whether
ContainerCollection.create
should append thelatest
tag if there was none, but its current behavior is also documented. Hence, only updatingrun
seems like the safest approach.