75 lines
2.7 KiB
Go
75 lines
2.7 KiB
Go
package libpod
|
|
|
|
import (
|
|
"github.com/containers/podman/v5/pkg/parallel"
|
|
"os"
|
|
"runtime"
|
|
"strings"
|
|
|
|
"github.com/containers/podman/v5/cmd/podman/registry"
|
|
"github.com/containers/podman/v5/pkg/domain/entities"
|
|
"github.com/sirupsen/logrus"
|
|
"github.com/spf13/cobra"
|
|
)
|
|
|
|
var (
|
|
defaultLogLevel = "warn"
|
|
logLevel = defaultLogLevel
|
|
dockerConfig = ""
|
|
debug bool
|
|
|
|
noStdout = false
|
|
useStdout = ""
|
|
)
|
|
|
|
func persistentPreRunE(cmd *cobra.Command, args []string) error {
|
|
logrus.Infof("Called %s.PersistentPreRunE(%s)", cmd.Name(), strings.Join(os.Args, " "))
|
|
podmanConfig := registry.PodmanConfig()
|
|
c := &cobra.Command{}
|
|
if _, err := registry.NewImageEngine(c, args); err != nil {
|
|
return err
|
|
}
|
|
if _, err := registry.NewContainerEngine(c, args); err != nil {
|
|
return err
|
|
}
|
|
|
|
if _, ok := os.LookupEnv("TMPDIR"); !ok {
|
|
if tmpdir, err := podmanConfig.ContainersConfDefaultsRO.ImageCopyTmpDir(); err != nil {
|
|
logrus.Warnf("Failed to retrieve default tmp dir: %s", err.Error())
|
|
} else {
|
|
os.Setenv("TMPDIR", tmpdir)
|
|
}
|
|
}
|
|
|
|
_, found := c.Annotations[registry.ParentNSRequired]
|
|
if !registry.IsRemote() && !found {
|
|
cgroupMode := ""
|
|
_, noMoveProcess := c.Annotations[registry.NoMoveProcess]
|
|
if flag := c.LocalFlags().Lookup("cgroups"); flag != nil {
|
|
cgroupMode = flag.Value.String()
|
|
}
|
|
err := registry.ContainerEngine().SetupRootless(registry.Context(), noMoveProcess, cgroupMode)
|
|
if err != nil {
|
|
return err
|
|
}
|
|
}
|
|
return nil
|
|
}
|
|
|
|
func setupRuntime(podmanConfig *entities.PodmanConfig) {
|
|
podmanConfig.ContainersConf.Engine.DBBackend = podmanConfig.ContainersConfDefaultsRO.Engine.DBBackend
|
|
podmanConfig.ContainersConf.Engine.CgroupManager = podmanConfig.ContainersConfDefaultsRO.Engine.CgroupManager
|
|
podmanConfig.ContainersConf.Engine.NetworkCmdPath = podmanConfig.ContainersConfDefaultsRO.Engine.NetworkCmdPath
|
|
podmanConfig.ContainersConf.Network.NetworkConfigDir = podmanConfig.ContainersConfDefaultsRO.Network.NetworkConfigDir
|
|
podmanConfig.ContainersConf.Containers.DefaultMountsFile = podmanConfig.ContainersConfDefaultsRO.Containers.DefaultMountsFile
|
|
podmanConfig.ContainersConf.Engine.EventsLogger = podmanConfig.ContainersConfDefaultsRO.Engine.EventsLogger
|
|
podmanConfig.MaxWorks = (runtime.NumCPU() * 3) + 1
|
|
podmanConfig.ContainersConf.Engine.Namespace = podmanConfig.ContainersConfDefaultsRO.Engine.Namespace
|
|
podmanConfig.ContainersConf.Network.NetworkBackend = podmanConfig.ContainersConfDefaultsRO.Network.NetworkBackend
|
|
podmanConfig.RuntimePath = "youki"
|
|
podmanConfig.ContainersConf.Engine.TmpDir = podmanConfig.ContainersConfDefaultsRO.Engine.TmpDir
|
|
podmanConfig.Trace = true
|
|
podmanConfig.ContainersConf.Engine.VolumePath = podmanConfig.ContainersConfDefaultsRO.Engine.VolumePath
|
|
parallel.SetMaxThreads(uint(podmanConfig.MaxWorks))
|
|
}
|