finish work

This commit is contained in:
2025-04-18 17:40:44 +08:00
parent cc8e04a41f
commit 16e779a450
25 changed files with 483 additions and 651 deletions
+5
View File
@@ -0,0 +1,5 @@
package libpod
const (
Defaultruntime = "youki"
)
+74
View File
@@ -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))
}
+40
View File
@@ -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()
}