mirror of
https://github.com/containers/podman.git
synced 2025-06-21 01:19:15 +08:00
Merge pull request #5879 from rhatdan/pull
Pull images when doing podman create
This commit is contained in:
@ -3,6 +3,7 @@ package containers
|
|||||||
import (
|
import (
|
||||||
"fmt"
|
"fmt"
|
||||||
|
|
||||||
|
"github.com/containers/common/pkg/config"
|
||||||
"github.com/containers/libpod/cmd/podman/common"
|
"github.com/containers/libpod/cmd/podman/common"
|
||||||
"github.com/containers/libpod/cmd/podman/registry"
|
"github.com/containers/libpod/cmd/podman/registry"
|
||||||
"github.com/containers/libpod/pkg/domain/entities"
|
"github.com/containers/libpod/pkg/domain/entities"
|
||||||
@ -61,6 +62,11 @@ func create(cmd *cobra.Command, args []string) error {
|
|||||||
if err := createInit(cmd); err != nil {
|
if err := createInit(cmd); err != nil {
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
|
if err := pullImage(args[0]); err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
|
||||||
//TODO rootfs still
|
//TODO rootfs still
|
||||||
s := specgen.NewSpecGenerator(rawImageInput)
|
s := specgen.NewSpecGenerator(rawImageInput)
|
||||||
if err := common.FillOutSpecGen(s, &cliVals, args); err != nil {
|
if err := common.FillOutSpecGen(s, &cliVals, args); err != nil {
|
||||||
@ -100,3 +106,27 @@ func createInit(c *cobra.Command) error {
|
|||||||
|
|
||||||
return nil
|
return nil
|
||||||
}
|
}
|
||||||
|
|
||||||
|
func pullImage(imageName string) error {
|
||||||
|
br, err := registry.ImageEngine().Exists(registry.GetContext(), imageName)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
pullPolicy, err := config.ValidatePullPolicy(cliVals.Pull)
|
||||||
|
if err != nil {
|
||||||
|
return err
|
||||||
|
}
|
||||||
|
if !br.Value || pullPolicy == config.PullImageAlways {
|
||||||
|
if pullPolicy == config.PullImageNever {
|
||||||
|
return errors.New("unable to find a name and tag match for busybox in repotags: no such image")
|
||||||
|
}
|
||||||
|
_, pullErr := registry.ImageEngine().Pull(registry.GetContext(), imageName, entities.ImagePullOptions{
|
||||||
|
Authfile: cliVals.Authfile,
|
||||||
|
Quiet: cliVals.Quiet,
|
||||||
|
})
|
||||||
|
if pullErr != nil {
|
||||||
|
return pullErr
|
||||||
|
}
|
||||||
|
}
|
||||||
|
return nil
|
||||||
|
}
|
||||||
|
@ -5,7 +5,6 @@ import (
|
|||||||
"os"
|
"os"
|
||||||
"strings"
|
"strings"
|
||||||
|
|
||||||
"github.com/containers/common/pkg/config"
|
|
||||||
"github.com/containers/libpod/cmd/podman/common"
|
"github.com/containers/libpod/cmd/podman/common"
|
||||||
"github.com/containers/libpod/cmd/podman/registry"
|
"github.com/containers/libpod/cmd/podman/registry"
|
||||||
"github.com/containers/libpod/libpod/define"
|
"github.com/containers/libpod/libpod/define"
|
||||||
@ -72,26 +71,10 @@ func run(cmd *cobra.Command, args []string) error {
|
|||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
|
|
||||||
br, err := registry.ImageEngine().Exists(registry.GetContext(), args[0])
|
if err := pullImage(args[0]); err != nil {
|
||||||
if err != nil {
|
|
||||||
return err
|
return err
|
||||||
}
|
}
|
||||||
pullPolicy, err := config.ValidatePullPolicy(cliVals.Pull)
|
|
||||||
if err != nil {
|
|
||||||
return err
|
|
||||||
}
|
|
||||||
if !br.Value || pullPolicy == config.PullImageAlways {
|
|
||||||
if pullPolicy == config.PullImageNever {
|
|
||||||
return errors.New("unable to find a name and tag match for busybox in repotags: no such image")
|
|
||||||
}
|
|
||||||
_, pullErr := registry.ImageEngine().Pull(registry.GetContext(), args[0], entities.ImagePullOptions{
|
|
||||||
Authfile: cliVals.Authfile,
|
|
||||||
Quiet: cliVals.Quiet,
|
|
||||||
})
|
|
||||||
if pullErr != nil {
|
|
||||||
return pullErr
|
|
||||||
}
|
|
||||||
}
|
|
||||||
// If -i is not set, clear stdin
|
// If -i is not set, clear stdin
|
||||||
if !cliVals.Interactive {
|
if !cliVals.Interactive {
|
||||||
runOpts.InputStream = nil
|
runOpts.InputStream = nil
|
||||||
|
Reference in New Issue
Block a user