finish work
This commit is contained in:
@@ -0,0 +1,5 @@
|
||||
package libpod
|
||||
|
||||
const (
|
||||
Defaultruntime = "youki"
|
||||
)
|
||||
@@ -0,0 +1,74 @@
|
||||
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))
|
||||
}
|
||||
@@ -0,0 +1,40 @@
|
||||
package libpod
|
||||
|
||||
import (
|
||||
"log"
|
||||
"net"
|
||||
|
||||
"github.com/containers/podman/v5/cmd/podman/registry"
|
||||
api "github.com/containers/podman/v5/pkg/api/server"
|
||||
"github.com/containers/podman/v5/pkg/domain/entities"
|
||||
"github.com/containers/podman/v5/pkg/domain/infra"
|
||||
"github.com/spf13/cobra"
|
||||
)
|
||||
|
||||
func NewServer() {
|
||||
cmd := &cobra.Command{}
|
||||
cfg := registry.PodmanConfig()
|
||||
defaultConf := cfg.ContainersConfDefaultsRO
|
||||
defaultConf.Engine.OCIRuntime = Defaultruntime
|
||||
setupRuntime(cfg)
|
||||
persistentPreRunE(cmd, nil)
|
||||
libpodRuntime, err := infra.GetRuntime(registry.Context(), cmd.PersistentFlags(), cfg)
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
|
||||
listener, err := net.Listen("tcp", "127.0.0.1:8888")
|
||||
if err != nil {
|
||||
panic(err)
|
||||
}
|
||||
libpodRuntime.SetRemoteURI("tcp://localhost:8888")
|
||||
infra.StartWatcher(libpodRuntime)
|
||||
|
||||
server, err := api.NewServerWithSettings(libpodRuntime, listener, entities.ServiceOptions{
|
||||
URI: "tcp://localhost:8888",
|
||||
})
|
||||
if err != nil {
|
||||
log.Fatal(err)
|
||||
}
|
||||
go server.Serve()
|
||||
}
|
||||
Reference in New Issue
Block a user