mirror of
https://github.com/containers/podman.git
synced 2025-12-11 17:27:19 +08:00
Merge pull request #14798 from flouthoc/overlay-mount-path-abs
overlay,mount: convert source to absolute path for `overlay` mounts of paths
This commit is contained in:
@@ -139,7 +139,13 @@ func GenVolumeMounts(volumeFlag []string) (map[string]spec.Mount, map[string]*Na
|
||||
// This is a overlay volume
|
||||
newOverlayVol := new(OverlayVolume)
|
||||
newOverlayVol.Destination = dest
|
||||
newOverlayVol.Source = src
|
||||
// convert src to absolute path so we don't end up passing
|
||||
// relative values as lowerdir for overlay mounts
|
||||
source, err := filepath.Abs(src)
|
||||
if err != nil {
|
||||
return nil, nil, nil, errors.Wrapf(err, "failed while resolving absolute path for source %v for overlay mount", src)
|
||||
}
|
||||
newOverlayVol.Source = source
|
||||
newOverlayVol.Options = options
|
||||
|
||||
if _, ok := overlayVolumes[newOverlayVol.Destination]; ok {
|
||||
|
||||
@@ -678,6 +678,15 @@ VOLUME /test/`, ALPINE)
|
||||
session.WaitWithDefaultTimeout()
|
||||
Expect(session).Should(Exit(0))
|
||||
|
||||
// Test overlay mount when lowerdir is relative path.
|
||||
f, err = os.Create("hello")
|
||||
Expect(err).To(BeNil(), "os.Create")
|
||||
f.Close()
|
||||
session = podmanTest.Podman([]string{"run", "--rm", "-v", ".:/app:O", ALPINE, "ls", "/app"})
|
||||
session.WaitWithDefaultTimeout()
|
||||
Expect(session.OutputToString()).To(ContainSubstring("hello"))
|
||||
Expect(session).Should(Exit(0))
|
||||
|
||||
// Make sure modifications in container do not show up on host
|
||||
session = podmanTest.Podman([]string{"run", "--rm", "-v", volumeFlag, ALPINE, "touch", "/run/test/container"})
|
||||
session.WaitWithDefaultTimeout()
|
||||
|
||||
Reference in New Issue
Block a user