* libimage: import: fix tags
* Don't use systemd defaults if /proc/1/comm != systemd

BZ: https://bugzilla.redhat.com/show_bug.cgi?id=1979497
Fixes: containers/podman/issues/10854
Signed-off-by: Valentin Rothberg <rothberg@redhat.com>
This commit is contained in:
Valentin Rothberg
2021-07-07 16:42:57 +02:00
parent 275b0d8263
commit bed195bf8c
8 changed files with 73 additions and 17 deletions

2
go.mod
View File

@ -12,7 +12,7 @@ require (
github.com/containernetworking/cni v0.8.1
github.com/containernetworking/plugins v0.9.1
github.com/containers/buildah v1.21.0
github.com/containers/common v0.38.14
github.com/containers/common v0.38.15
github.com/containers/conmon v2.0.20+incompatible
github.com/containers/image/v5 v5.12.0
github.com/containers/ocicrypt v1.1.1

4
go.sum
View File

@ -218,8 +218,8 @@ github.com/containernetworking/plugins v0.9.1/go.mod h1:xP/idU2ldlzN6m4p5LmGiwRD
github.com/containers/buildah v1.21.0 h1:LuwuqRPjan3X3AIdGwfkEkqMgmrDMNpQznFqNdHgCz8=
github.com/containers/buildah v1.21.0/go.mod h1:yPdlpVd93T+i91yGxrJbW1YOWrqN64j5ZhHOZmHUejs=
github.com/containers/common v0.38.4/go.mod h1:egfpX/Y3+19Dz4Wa1eRZDdgzoEOeneieF9CQppKzLBg=
github.com/containers/common v0.38.14 h1:6fp6+NpG/JhhGboRuUuc4fDaXHoHnSW9n/qL2iGQlLA=
github.com/containers/common v0.38.14/go.mod h1:egfpX/Y3+19Dz4Wa1eRZDdgzoEOeneieF9CQppKzLBg=
github.com/containers/common v0.38.15 h1:esHGxhaqjb5GihF9uO2KZoSGcydIB1PxjZojDipkN6E=
github.com/containers/common v0.38.15/go.mod h1:egfpX/Y3+19Dz4Wa1eRZDdgzoEOeneieF9CQppKzLBg=
github.com/containers/conmon v2.0.20+incompatible h1:YbCVSFSCqFjjVwHTPINGdMX1F6JXHGTUje2ZYobNrkg=
github.com/containers/conmon v2.0.20+incompatible/go.mod h1:hgwZ2mtuDrppv78a/cOBNiCm6O0UMWGx1mu7P00nu5I=
github.com/containers/image/v5 v5.12.0 h1:1hNS2QkzFQ4lH3GYQLyAXB0acRMhS1Ubm6oV++8vw4w=

View File

@ -80,16 +80,12 @@ func (r *Runtime) Import(ctx context.Context, path string, options *ImportOption
return "", err
}
name := options.Tag
if name == "" {
name, err = getImageDigest(ctx, srcRef, r.systemContextCopy())
id, err := getImageDigest(ctx, srcRef, r.systemContextCopy())
if err != nil {
return "", err
}
name = "sha256:" + name[1:] // strip leading "@"
}
destRef, err := storageTransport.Transport.ParseStoreReference(r.store, name)
destRef, err := storageTransport.Transport.ParseStoreReference(r.store, id)
if err != nil {
return "", err
}
@ -104,5 +100,19 @@ func (r *Runtime) Import(ctx context.Context, path string, options *ImportOption
return "", err
}
return name, nil
// Strip the leading @ off the id.
name := id[1:]
// If requested, tag the imported image.
if options.Tag != "" {
image, _, err := r.LookupImage(name, nil)
if err != nil {
return "", errors.Wrap(err, "looking up imported image")
}
if err := image.Tag(options.Tag); err != nil {
return "", err
}
}
return "sha256:" + name, nil
}

View File

@ -191,7 +191,7 @@ func DefaultConfig() (*Config, error) {
Init: false,
InitPath: "",
IPCNS: "private",
LogDriver: DefaultLogDriver,
LogDriver: defaultLogDriver(),
LogSizeMax: DefaultLogSizeMax,
NetNS: netns,
NoHosts: false,

View File

@ -3,9 +3,17 @@
package config
func defaultCgroupManager() string {
return "cgroupfs"
return CgroupfsCgroupsManager
}
func defaultEventsLogger() string {
return "file"
}
func defaultLogDriver() string {
return DefaultLogDriver
}
func useSystemd() bool {
return false
}

View File

@ -3,11 +3,23 @@
package config
import (
"io/ioutil"
"strings"
"sync"
"github.com/containers/common/pkg/cgroupv2"
"github.com/containers/storage/pkg/unshare"
)
var (
systemdOnce sync.Once
usesSystemd bool
)
func defaultCgroupManager() string {
if !useSystemd() {
return CgroupfsCgroupsManager
}
enabled, err := cgroupv2.Enabled()
if err == nil && !enabled && unshare.IsRootless() {
return CgroupfsCgroupsManager
@ -15,6 +27,32 @@ func defaultCgroupManager() string {
return SystemdCgroupsManager
}
func defaultEventsLogger() string {
if useSystemd() {
return "journald"
}
return "file"
}
func defaultLogDriver() string {
// If we decide to change the default for logdriver, it should be done here.
if useSystemd() {
return DefaultLogDriver
}
return DefaultLogDriver
}
func useSystemd() bool {
systemdOnce.Do(func() {
dat, err := ioutil.ReadFile("/proc/1/comm")
if err == nil {
val := strings.TrimSuffix(string(dat), "\n")
usesSystemd = (val == "systemd")
}
return
})
return usesSystemd
}

View File

@ -1,4 +1,4 @@
package version
// Version is the version of the build.
const Version = "0.38.14"
const Version = "0.38.15"

2
vendor/modules.txt vendored
View File

@ -91,7 +91,7 @@ github.com/containers/buildah/pkg/overlay
github.com/containers/buildah/pkg/parse
github.com/containers/buildah/pkg/rusage
github.com/containers/buildah/util
# github.com/containers/common v0.38.14
# github.com/containers/common v0.38.15
github.com/containers/common/libimage
github.com/containers/common/libimage/manifests
github.com/containers/common/pkg/apparmor