Merge pull request #125585 from akhilerm/update-runc-1.1.13
update runc to 1.1.13
This commit is contained in:
		
							
								
								
									
										2
									
								
								go.mod
									
									
									
									
									
								
							
							
						
						
									
										2
									
								
								go.mod
									
									
									
									
									
								
							| @@ -46,7 +46,7 @@ require ( | ||||
| 	github.com/munnerz/goautoneg v0.0.0-20191010083416-a7dc8b61c822 | ||||
| 	github.com/onsi/ginkgo/v2 v2.19.0 | ||||
| 	github.com/onsi/gomega v1.33.1 | ||||
| 	github.com/opencontainers/runc v1.1.12 | ||||
| 	github.com/opencontainers/runc v1.1.13 | ||||
| 	github.com/opencontainers/selinux v1.11.0 | ||||
| 	github.com/pkg/errors v0.9.1 | ||||
| 	github.com/pmezard/go-difflib v1.0.1-0.20181226105442-5d4384ee4fb2 | ||||
|   | ||||
							
								
								
									
										4
									
								
								go.sum
									
									
									
									
									
								
							
							
						
						
									
										4
									
								
								go.sum
									
									
									
									
									
								
							| @@ -541,8 +541,8 @@ github.com/opencontainers/go-digest v1.0.0 h1:apOUWs51W5PlhuyGyz9FCeeBIOUDA/6nW8 | ||||
| github.com/opencontainers/go-digest v1.0.0/go.mod h1:0JzlMkj0TRzQZfJkVvzbP0HBR3IKzErnv2BNG4W4MAM= | ||||
| github.com/opencontainers/image-spec v1.0.2 h1:9yCKha/T5XdGtO0q9Q9a6T5NUCsTn/DrBg0D7ufOcFM= | ||||
| github.com/opencontainers/image-spec v1.0.2/go.mod h1:BtxoFyWECRxE4U/7sNtV5W15zMzWCbyJoFRP3s7yZA0= | ||||
| github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= | ||||
| github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= | ||||
| github.com/opencontainers/runc v1.1.13 h1:98S2srgG9vw0zWcDpFMn5TRrh8kLxa/5OFUstuUhmRs= | ||||
| github.com/opencontainers/runc v1.1.13/go.mod h1:R016aXacfp/gwQBYw2FDGa9m+n6atbLWrYY8hNMT/sA= | ||||
| github.com/opencontainers/runtime-spec v1.0.2/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||
| github.com/opencontainers/runtime-spec v1.0.3-0.20200929063507-e6143ca7d51d/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||
| github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78 h1:R5M2qXZiK/mWPMT4VldCOiSL9HIAMuxQZWdG0CSM5+4= | ||||
|   | ||||
| @@ -6,7 +6,7 @@ go 1.22.0 | ||||
|  | ||||
| require ( | ||||
| 	github.com/moby/sys/mountinfo v0.6.2 | ||||
| 	github.com/opencontainers/runc v1.1.12 | ||||
| 	github.com/opencontainers/runc v1.1.13 | ||||
| 	github.com/stretchr/testify v1.8.4 | ||||
| 	golang.org/x/sys v0.20.0 | ||||
| 	k8s.io/klog/v2 v2.130.1 | ||||
|   | ||||
							
								
								
									
										6
									
								
								staging/src/k8s.io/mount-utils/go.sum
									
									
									
										generated
									
									
									
								
							
							
						
						
									
										6
									
								
								staging/src/k8s.io/mount-utils/go.sum
									
									
									
										generated
									
									
									
								
							| @@ -26,8 +26,8 @@ github.com/kr/text v0.2.0/go.mod h1:eLer722TekiGuMkidMxC/pM04lWEeraHUUmBw8l2grE= | ||||
| github.com/moby/sys/mountinfo v0.6.2 h1:BzJjoreD5BMFNmD9Rus6gdd1pLuecOFPt8wC+Vygl78= | ||||
| github.com/moby/sys/mountinfo v0.6.2/go.mod h1:IJb6JQeOklcdMU9F5xQ8ZALD+CUr5VlGpwtX+VE0rpI= | ||||
| github.com/mrunalp/fileutils v0.5.1/go.mod h1:M1WthSahJixYnrXQl/DFQuteStB1weuxD2QJNHXfbSQ= | ||||
| github.com/opencontainers/runc v1.1.12 h1:BOIssBaW1La0/qbNZHXOOa71dZfZEQOzW7dqQf3phss= | ||||
| github.com/opencontainers/runc v1.1.12/go.mod h1:S+lQwSfncpBha7XTy/5lBwWgm5+y5Ma/O44Ekby9FK8= | ||||
| github.com/opencontainers/runc v1.1.13 h1:98S2srgG9vw0zWcDpFMn5TRrh8kLxa/5OFUstuUhmRs= | ||||
| github.com/opencontainers/runc v1.1.13/go.mod h1:R016aXacfp/gwQBYw2FDGa9m+n6atbLWrYY8hNMT/sA= | ||||
| github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78 h1:R5M2qXZiK/mWPMT4VldCOiSL9HIAMuxQZWdG0CSM5+4= | ||||
| github.com/opencontainers/runtime-spec v1.0.3-0.20220909204839-494a5a6aca78/go.mod h1:jwyrGlmzljRJv/Fgzds9SsS/C5hL+LL3ko9hs6T5lQ0= | ||||
| github.com/opencontainers/selinux v1.10.0/go.mod h1:2i0OySw99QjzBBQByd1Gr9gSjvuho1lHsJxIJ3gGbJI= | ||||
| @@ -53,7 +53,7 @@ github.com/urfave/cli v1.22.1/go.mod h1:Gos4lmkARVdJ6EkW0WaNv/tZAAMe9V7XWyB60NtX | ||||
| github.com/vishvananda/netlink v1.1.0/go.mod h1:cTgwzPIzzgDAYoQrMm0EdrjRUBkTqKYppBueQtXaqoE= | ||||
| github.com/vishvananda/netns v0.0.0-20191106174202-0a2b9b5464df/go.mod h1:JP3t17pCcGlemwknint6hfoeCVQrEMVwxRLRjXpq+BU= | ||||
| golang.org/x/mod v0.9.0/go.mod h1:iBbtSCu2XBx23ZKBPSOrRkjjQPZFPuis4dIYUhu/chs= | ||||
| golang.org/x/net v0.8.0/go.mod h1:QVkue5JL9kW//ek3r6jTKnTFis1tRmNAW2P1shuFdJc= | ||||
| golang.org/x/net v0.24.0/go.mod h1:2Q7sJY5mzlzWjKtYUEXSlBWCdyaioyXzRB2RtU8KVE8= | ||||
| golang.org/x/sys v0.0.0-20220520151302-bc2c85ada10a/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.0.0-20220715151400-c0bba94af5f8/go.mod h1:oPkhp1MJrh7nUepCBck5+mAzfO9JrbApNNgaTdGDITg= | ||||
| golang.org/x/sys v0.20.0 h1:Od9JTbYCk261bKm4M/mw7AklTlFYIa0bIp9BgSm1S8Y= | ||||
|   | ||||
							
								
								
									
										20
									
								
								vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										20
									
								
								vendor/github.com/opencontainers/runc/libcontainer/cgroups/fs/cpu.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -35,15 +35,31 @@ func (s *CpuGroup) Apply(path string, r *configs.Resources, pid int) error { | ||||
| } | ||||
|  | ||||
| func (s *CpuGroup) SetRtSched(path string, r *configs.Resources) error { | ||||
| 	var period string | ||||
| 	if r.CpuRtPeriod != 0 { | ||||
| 		if err := cgroups.WriteFile(path, "cpu.rt_period_us", strconv.FormatUint(r.CpuRtPeriod, 10)); err != nil { | ||||
| 			return err | ||||
| 		period = strconv.FormatUint(r.CpuRtPeriod, 10) | ||||
| 		if err := cgroups.WriteFile(path, "cpu.rt_period_us", period); err != nil { | ||||
| 			// The values of cpu.rt_period_us and cpu.rt_runtime_us | ||||
| 			// are inter-dependent and need to be set in a proper order. | ||||
| 			// If the kernel rejects the new period value with EINVAL | ||||
| 			// and the new runtime value is also being set, let's | ||||
| 			// ignore the error for now and retry later. | ||||
| 			if !errors.Is(err, unix.EINVAL) || r.CpuRtRuntime == 0 { | ||||
| 				return err | ||||
| 			} | ||||
| 		} else { | ||||
| 			period = "" | ||||
| 		} | ||||
| 	} | ||||
| 	if r.CpuRtRuntime != 0 { | ||||
| 		if err := cgroups.WriteFile(path, "cpu.rt_runtime_us", strconv.FormatInt(r.CpuRtRuntime, 10)); err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| 		if period != "" { | ||||
| 			if err := cgroups.WriteFile(path, "cpu.rt_period_us", period); err != nil { | ||||
| 				return err | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	return nil | ||||
| } | ||||
|   | ||||
							
								
								
									
										19
									
								
								vendor/github.com/opencontainers/runc/libcontainer/init_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										19
									
								
								vendor/github.com/opencontainers/runc/libcontainer/init_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -10,6 +10,7 @@ import ( | ||||
| 	"os" | ||||
| 	"path/filepath" | ||||
| 	"strings" | ||||
| 	"syscall" | ||||
| 	"unsafe" | ||||
|  | ||||
| 	"github.com/containerd/console" | ||||
| @@ -84,6 +85,11 @@ func newContainerInit(t initType, pipe *os.File, consoleSocket *os.File, fifoFd, | ||||
| 	if err := populateProcessEnvironment(config.Env); err != nil { | ||||
| 		return nil, err | ||||
| 	} | ||||
|  | ||||
| 	// Clean the RLIMIT_NOFILE cache in go runtime. | ||||
| 	// Issue: https://github.com/opencontainers/runc/issues/4195 | ||||
| 	maybeClearRlimitNofileCache(config.Rlimits) | ||||
|  | ||||
| 	switch t { | ||||
| 	case initSetns: | ||||
| 		// mountFds must be nil in this case. We don't mount while doing runc exec. | ||||
| @@ -261,7 +267,6 @@ func setupConsole(socket *os.File, config *initConfig, mount bool) error { | ||||
| 			Height: config.ConsoleHeight, | ||||
| 			Width:  config.ConsoleWidth, | ||||
| 		}) | ||||
|  | ||||
| 		if err != nil { | ||||
| 			return err | ||||
| 		} | ||||
| @@ -518,6 +523,18 @@ func setupRoute(config *configs.Config) error { | ||||
| 	return nil | ||||
| } | ||||
|  | ||||
| func maybeClearRlimitNofileCache(limits []configs.Rlimit) { | ||||
| 	for _, rlimit := range limits { | ||||
| 		if rlimit.Type == syscall.RLIMIT_NOFILE { | ||||
| 			system.ClearRlimitNofileCache(&syscall.Rlimit{ | ||||
| 				Cur: rlimit.Soft, | ||||
| 				Max: rlimit.Hard, | ||||
| 			}) | ||||
| 			return | ||||
| 		} | ||||
| 	} | ||||
| } | ||||
|  | ||||
| func setupRlimits(limits []configs.Rlimit, pid int) error { | ||||
| 	for _, rlimit := range limits { | ||||
| 		if err := unix.Prlimit(pid, rlimit.Type, &unix.Rlimit{Max: rlimit.Hard, Cur: rlimit.Soft}, nil); err != nil { | ||||
|   | ||||
							
								
								
									
										18
									
								
								vendor/github.com/opencontainers/runc/libcontainer/process_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										18
									
								
								vendor/github.com/opencontainers/runc/libcontainer/process_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -152,11 +152,7 @@ func (p *setnsProcess) start() (retErr error) { | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
| 	// set rlimits, this has to be done here because we lose permissions | ||||
| 	// to raise the limits once we enter a user-namespace | ||||
| 	if err := setupRlimits(p.config.Rlimits, p.pid()); err != nil { | ||||
| 		return fmt.Errorf("error setting rlimits for process: %w", err) | ||||
| 	} | ||||
|  | ||||
| 	if err := utils.WriteJSON(p.messageSockPair.parent, p.config); err != nil { | ||||
| 		return fmt.Errorf("error writing config to pipe: %w", err) | ||||
| 	} | ||||
| @@ -164,8 +160,14 @@ func (p *setnsProcess) start() (retErr error) { | ||||
| 	ierr := parseSync(p.messageSockPair.parent, func(sync *syncT) error { | ||||
| 		switch sync.Type { | ||||
| 		case procReady: | ||||
| 			// This shouldn't happen. | ||||
| 			panic("unexpected procReady in setns") | ||||
| 			// Set rlimits, this has to be done here because we lose permissions | ||||
| 			// to raise the limits once we enter a user-namespace | ||||
| 			if err := setupRlimits(p.config.Rlimits, p.pid()); err != nil { | ||||
| 				return fmt.Errorf("error setting rlimits for ready process: %w", err) | ||||
| 			} | ||||
|  | ||||
| 			// Sync with child. | ||||
| 			return writeSync(p.messageSockPair.parent, procRun) | ||||
| 		case procHooks: | ||||
| 			// This shouldn't happen. | ||||
| 			panic("unexpected procHooks in setns") | ||||
| @@ -495,7 +497,7 @@ func (p *initProcess) start() (retErr error) { | ||||
| 				return err | ||||
| 			} | ||||
| 		case procReady: | ||||
| 			// set rlimits, this has to be done here because we lose permissions | ||||
| 			// Set rlimits, this has to be done here because we lose permissions | ||||
| 			// to raise the limits once we enter a user-namespace | ||||
| 			if err := setupRlimits(p.config.Rlimits, p.pid()); err != nil { | ||||
| 				return fmt.Errorf("error setting rlimits for ready process: %w", err) | ||||
|   | ||||
							
								
								
									
										1
									
								
								vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/opencontainers/runc/libcontainer/rootfs_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -602,6 +602,7 @@ func checkProcMount(rootfs, dest, source string) error { | ||||
| 		"/proc/slabinfo", | ||||
| 		"/proc/net/dev", | ||||
| 		"/proc/sys/kernel/ns_last_pid", | ||||
| 		"/proc/sys/crypto/fips_enabled", | ||||
| 	} | ||||
| 	for _, valid := range validProcMounts { | ||||
| 		path, err := filepath.Rel(filepath.Join(rootfs, valid), dest) | ||||
|   | ||||
							
								
								
									
										9
									
								
								vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										9
									
								
								vendor/github.com/opencontainers/runc/libcontainer/setns_init_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -48,6 +48,7 @@ func (l *linuxSetnsInit) Init() error { | ||||
| 			} | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	if l.config.CreateConsole { | ||||
| 		if err := setupConsole(l.consoleSocket, l.config, false); err != nil { | ||||
| 			return err | ||||
| @@ -61,6 +62,14 @@ func (l *linuxSetnsInit) Init() error { | ||||
| 			return err | ||||
| 		} | ||||
| 	} | ||||
|  | ||||
| 	// Tell our parent that we're ready to exec. This must be done before the | ||||
| 	// Seccomp rules have been applied, because we need to be able to read and | ||||
| 	// write to a socket. | ||||
| 	if err := syncParentReady(l.pipe); err != nil { | ||||
| 		return fmt.Errorf("sync ready: %w", err) | ||||
| 	} | ||||
|  | ||||
| 	if err := selinux.SetExecLabel(l.config.ProcessLabel); err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|   | ||||
							
								
								
									
										3
									
								
								vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										3
									
								
								vendor/github.com/opencontainers/runc/libcontainer/standard_init_linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -155,7 +155,8 @@ func (l *linuxStandardInit) Init() error { | ||||
| 			return &os.SyscallError{Syscall: "prctl(SET_NO_NEW_PRIVS)", Err: err} | ||||
| 		} | ||||
| 	} | ||||
| 	// Tell our parent that we're ready to Execv. This must be done before the | ||||
|  | ||||
| 	// Tell our parent that we're ready to exec. This must be done before the | ||||
| 	// Seccomp rules have been applied, because we need to be able to read and | ||||
| 	// write to a socket. | ||||
| 	if err := syncParentReady(l.pipe); err != nil { | ||||
|   | ||||
							
								
								
									
										2
									
								
								vendor/github.com/opencontainers/runc/libcontainer/system/linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										2
									
								
								vendor/github.com/opencontainers/runc/libcontainer/system/linux.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -31,12 +31,12 @@ func (p ParentDeathSignal) Set() error { | ||||
| 	return SetParentDeathSignal(uintptr(p)) | ||||
| } | ||||
|  | ||||
| // Deprecated: Execv is not used in runc anymore, it will be removed in v1.2.0. | ||||
| func Execv(cmd string, args []string, env []string) error { | ||||
| 	name, err := exec.LookPath(cmd) | ||||
| 	if err != nil { | ||||
| 		return err | ||||
| 	} | ||||
|  | ||||
| 	return Exec(name, args, env) | ||||
| } | ||||
|  | ||||
|   | ||||
							
								
								
									
										15
									
								
								vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										15
									
								
								vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_linux.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,15 @@ | ||||
| //go:build go1.23 | ||||
|  | ||||
| package system | ||||
|  | ||||
| import ( | ||||
| 	"syscall" | ||||
| ) | ||||
|  | ||||
| // ClearRlimitNofileCache clears go runtime's nofile rlimit cache. The argument | ||||
| // is process RLIMIT_NOFILE values. Relies on go.dev/cl/588076. | ||||
| func ClearRlimitNofileCache(lim *syscall.Rlimit) { | ||||
| 	// Ignore the return values since we only need to clean the cache, | ||||
| 	// the limit is going to be set via unix.Prlimit elsewhere. | ||||
| 	_ = syscall.Setrlimit(syscall.RLIMIT_NOFILE, lim) | ||||
| } | ||||
							
								
								
									
										27
									
								
								vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_linux_go122.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										27
									
								
								vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_linux_go122.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,27 @@ | ||||
| //go:build go1.19 && !go1.23 | ||||
|  | ||||
| // TODO: remove this file once go 1.22 is no longer supported. | ||||
|  | ||||
| package system | ||||
|  | ||||
| import ( | ||||
| 	"sync/atomic" | ||||
| 	"syscall" | ||||
| 	_ "unsafe" // Needed for go:linkname to work. | ||||
| ) | ||||
|  | ||||
| //go:linkname syscallOrigRlimitNofile syscall.origRlimitNofile | ||||
| var syscallOrigRlimitNofile atomic.Pointer[syscall.Rlimit] | ||||
|  | ||||
| // ClearRlimitNofileCache clears go runtime's nofile rlimit cache. | ||||
| // The argument is process RLIMIT_NOFILE values. | ||||
| func ClearRlimitNofileCache(_ *syscall.Rlimit) { | ||||
| 	// As reported in issue #4195, the new version of go runtime(since 1.19) | ||||
| 	// will cache rlimit-nofile. Before executing execve, the rlimit-nofile | ||||
| 	// of the process will be restored with the cache. In runc, this will | ||||
| 	// cause the rlimit-nofile setting by the parent process for the container | ||||
| 	// to become invalid. It can be solved by clearing this cache. But | ||||
| 	// unfortunately, go stdlib doesn't provide such function, so we need to | ||||
| 	// link to the private var `origRlimitNofile` in package syscall to hack. | ||||
| 	syscallOrigRlimitNofile.Store(nil) | ||||
| } | ||||
							
								
								
									
										7
									
								
								vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_stub.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							
							
						
						
									
										7
									
								
								vendor/github.com/opencontainers/runc/libcontainer/system/rlimit_stub.go
									
									
									
										generated
									
									
										vendored
									
									
										Normal file
									
								
							| @@ -0,0 +1,7 @@ | ||||
| //go:build !go1.19 | ||||
|  | ||||
| package system | ||||
|  | ||||
| import "syscall" | ||||
|  | ||||
| func ClearRlimitNofileCache(_ *syscall.Rlimit) {} | ||||
							
								
								
									
										1
									
								
								vendor/github.com/opencontainers/runc/libcontainer/user/user.go
									
									
									
										generated
									
									
										vendored
									
									
								
							
							
						
						
									
										1
									
								
								vendor/github.com/opencontainers/runc/libcontainer/user/user.go
									
									
									
										generated
									
									
										vendored
									
									
								
							| @@ -197,7 +197,6 @@ func ParseGroupFilter(r io.Reader, filter func(Group) bool) ([]Group, error) { | ||||
| 		for { | ||||
| 			var line []byte | ||||
| 			line, isPrefix, err = rd.ReadLine() | ||||
|  | ||||
| 			if err != nil { | ||||
| 				// We should return no error if EOF is reached | ||||
| 				// without a match. | ||||
|   | ||||
							
								
								
									
										4
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							
							
						
						
									
										4
									
								
								vendor/modules.txt
									
									
									
									
										vendored
									
									
								
							| @@ -496,8 +496,8 @@ github.com/onsi/gomega/types | ||||
| # github.com/opencontainers/go-digest v1.0.0 | ||||
| ## explicit; go 1.13 | ||||
| github.com/opencontainers/go-digest | ||||
| # github.com/opencontainers/runc v1.1.12 | ||||
| ## explicit; go 1.17 | ||||
| # github.com/opencontainers/runc v1.1.13 | ||||
| ## explicit; go 1.18 | ||||
| github.com/opencontainers/runc/libcontainer | ||||
| github.com/opencontainers/runc/libcontainer/apparmor | ||||
| github.com/opencontainers/runc/libcontainer/capabilities | ||||
|   | ||||
		Reference in New Issue
	
	Block a user
	 Kubernetes Prow Robot
					Kubernetes Prow Robot