aboutsummaryrefslogtreecommitdiff
path: root/cmd/podman
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2018-07-13 14:15:54 -0400
committerGitHub <noreply@github.com>2018-07-13 14:15:54 -0400
commit673465a7475f2c4ed6bfe06c481ecc99a2510c30 (patch)
tree9552b4b7e5956fbb798bf9d77820c7d30035a8c3 /cmd/podman
parent827359c8e6b116b839a95460cc1775a11f84b682 (diff)
parent62e48e5b71abe3002361bbf018961f8031fba03e (diff)
downloadpodman-673465a7475f2c4ed6bfe06c481ecc99a2510c30.tar.gz
podman-673465a7475f2c4ed6bfe06c481ecc99a2510c30.tar.bz2
podman-673465a7475f2c4ed6bfe06c481ecc99a2510c30.zip
Merge pull request #1075 from giuseppe/rootless-no-symlinks-into-storage-path
rootless: fix usage on Fedora Silverblue/CoreOS
Diffstat (limited to 'cmd/podman')
-rw-r--r--cmd/podman/libpodruntime/runtime.go15
-rw-r--r--cmd/podman/main.go4
2 files changed, 15 insertions, 4 deletions
diff --git a/cmd/podman/libpodruntime/runtime.go b/cmd/podman/libpodruntime/runtime.go
index b48667653..098864810 100644
--- a/cmd/podman/libpodruntime/runtime.go
+++ b/cmd/podman/libpodruntime/runtime.go
@@ -6,6 +6,7 @@ import (
"path/filepath"
"github.com/containers/storage"
+ "github.com/pkg/errors"
"github.com/projectatomic/libpod/libpod"
"github.com/projectatomic/libpod/pkg/rootless"
"github.com/urfave/cli"
@@ -23,7 +24,11 @@ func GetRuntime(c *cli.Context) (*libpod.Runtime, error) {
func GetRootlessStorageOpts() (storage.StoreOptions, error) {
var opts storage.StoreOptions
- opts.RunRoot = filepath.Join(libpod.GetRootlessRuntimeDir(), "run")
+ rootlessRuntime, err := libpod.GetRootlessRuntimeDir()
+ if err != nil {
+ return opts, err
+ }
+ opts.RunRoot = filepath.Join(rootlessRuntime, "run")
dataDir := os.Getenv("XDG_DATA_HOME")
if dataDir == "" {
@@ -31,7 +36,13 @@ func GetRootlessStorageOpts() (storage.StoreOptions, error) {
if home == "" {
return opts, fmt.Errorf("neither XDG_DATA_HOME nor HOME was set non-empty")
}
- dataDir = filepath.Join(home, ".local", "share")
+ // runc doesn't like symlinks in the rootfs path, and at least
+ // on CoreOS /home is a symlink to /var/home, so resolve any symlink.
+ resolvedHome, err := filepath.EvalSymlinks(home)
+ if err != nil {
+ return opts, errors.Wrapf(err, "cannot resolve %s", home)
+ }
+ dataDir = filepath.Join(resolvedHome, ".local", "share")
}
opts.GraphRoot = filepath.Join(dataDir, "containers", "storage")
opts.GraphDriverName = "vfs"
diff --git a/cmd/podman/main.go b/cmd/podman/main.go
index a83dc5fb4..3dbf196c2 100644
--- a/cmd/podman/main.go
+++ b/cmd/podman/main.go
@@ -29,13 +29,13 @@ func main() {
debug := false
cpuProfile := false
- became, err := rootless.BecomeRootInUserNS()
+ became, ret, err := rootless.BecomeRootInUserNS()
if err != nil {
logrus.Errorf(err.Error())
os.Exit(1)
}
if became {
- os.Exit(0)
+ os.Exit(ret)
}
if reexec.Init() {