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 (
|
||||
"fmt"
|
||||
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/libpod/cmd/podman/common"
|
||||
"github.com/containers/libpod/cmd/podman/registry"
|
||||
"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 {
|
||||
return err
|
||||
}
|
||||
|
||||
if err := pullImage(args[0]); err != nil {
|
||||
return err
|
||||
}
|
||||
|
||||
//TODO rootfs still
|
||||
s := specgen.NewSpecGenerator(rawImageInput)
|
||||
if err := common.FillOutSpecGen(s, &cliVals, args); err != nil {
|
||||
@ -100,3 +106,27 @@ func createInit(c *cobra.Command) error {
|
||||
|
||||
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"
|
||||
"strings"
|
||||
|
||||
"github.com/containers/common/pkg/config"
|
||||
"github.com/containers/libpod/cmd/podman/common"
|
||||
"github.com/containers/libpod/cmd/podman/registry"
|
||||
"github.com/containers/libpod/libpod/define"
|
||||
@ -72,26 +71,10 @@ func run(cmd *cobra.Command, args []string) error {
|
||||
return err
|
||||
}
|
||||
|
||||
br, err := registry.ImageEngine().Exists(registry.GetContext(), args[0])
|
||||
if err != nil {
|
||||
if err := pullImage(args[0]); 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(), args[0], entities.ImagePullOptions{
|
||||
Authfile: cliVals.Authfile,
|
||||
Quiet: cliVals.Quiet,
|
||||
})
|
||||
if pullErr != nil {
|
||||
return pullErr
|
||||
}
|
||||
}
|
||||
|
||||
// If -i is not set, clear stdin
|
||||
if !cliVals.Interactive {
|
||||
runOpts.InputStream = nil
|
||||
|
Reference in New Issue
Block a user