mirror of https://github.com/containers/podman.git
Merge pull request #8690 from zhangguanzhang/apiv2-wrong-ImgName
Fix Wrong img name used when creating a container from an image which had multi names
This commit is contained in:
commit
99ac30a882
|
|
@ -66,7 +66,20 @@ func CreateContainer(w http.ResponseWriter, r *http.Request) {
|
|||
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "make cli opts()"))
|
||||
return
|
||||
}
|
||||
sg := specgen.NewSpecGenerator(newImage.ID(), cliOpts.RootFS)
|
||||
|
||||
imgNameOrID := newImage.ID()
|
||||
// if the img had multi names with the same sha256 ID, should use the InputName, not the ID
|
||||
if len(newImage.Names()) > 1 {
|
||||
imageRef, err := utils.ParseDockerReference(newImage.InputName)
|
||||
if err != nil {
|
||||
utils.Error(w, http.StatusText(http.StatusBadRequest), http.StatusBadRequest, err)
|
||||
return
|
||||
}
|
||||
// maybe the InputName has no tag, so use full name to display
|
||||
imgNameOrID = imageRef.DockerReference().String()
|
||||
}
|
||||
|
||||
sg := specgen.NewSpecGenerator(imgNameOrID, cliOpts.RootFS)
|
||||
if err := common.FillOutSpecGen(sg, cliOpts, args); err != nil {
|
||||
utils.Error(w, "Something went wrong.", http.StatusInternalServerError, errors.Wrap(err, "fill out specgen"))
|
||||
return
|
||||
|
|
|
|||
|
|
@ -5,8 +5,10 @@
|
|||
|
||||
# WORKDIR=/data
|
||||
ENV_WORKDIR_IMG=quay.io/libpod/testimage:20200929
|
||||
MultiTagName=localhost/test/testformultitag:tag
|
||||
|
||||
podman pull $IMAGE &>/dev/null
|
||||
podman tag $IMAGE $MultiTagName
|
||||
podman pull $ENV_WORKDIR_IMG &>/dev/null
|
||||
# Unimplemented
|
||||
#t POST libpod/containers/create '' 201 'sdf'
|
||||
|
|
@ -216,4 +218,13 @@ t GET containers/$cid/json 200 \
|
|||
|
||||
t DELETE containers/$cid 204
|
||||
|
||||
# when the image had multi tags, the container's Image should be correct
|
||||
# Fixes https://github.com/containers/podman/issues/8547
|
||||
t POST containers/create Image=${MultiTagName} 201 \
|
||||
.Id~[0-9a-f]\\{64\\}
|
||||
cid=$(jq -r '.Id' <<<"$output")
|
||||
t GET containers/$cid/json 200 \
|
||||
.Image=${MultiTagName}
|
||||
t DELETE containers/$cid 204
|
||||
t DELETE images/${MultiTagName}?force=true 200
|
||||
# vim: filetype=sh
|
||||
|
|
|
|||
Loading…
Reference in New Issue