summaryrefslogtreecommitdiff
path: root/libpod/container_internal_linux.go
diff options
context:
space:
mode:
authorDaniel J Walsh <dwalsh@redhat.com>2018-12-24 06:55:24 -0500
committerDaniel J Walsh <dwalsh@redhat.com>2018-12-24 09:03:53 -0500
commitdf99522c6794cbf9ea77c4c314dadf9e9b5b2a54 (patch)
treef43b0228054882a212b9493f4fca9657918ab88d /libpod/container_internal_linux.go
parentbbfe7341b7c03cba4a362ec1e1198ff3eb90d962 (diff)
downloadpodman-df99522c6794cbf9ea77c4c314dadf9e9b5b2a54.tar.gz
podman-df99522c6794cbf9ea77c4c314dadf9e9b5b2a54.tar.bz2
podman-df99522c6794cbf9ea77c4c314dadf9e9b5b2a54.zip
Fixes to handle /dev/shm correctly.
We had two problems with /dev/shm, first, you mount the container read/only then /dev/shm was mounted read/only. This is a bug a tmpfs directory should be read/write within a read-only container. The second problem is we were ignoring users mounted /dev/shm from the host. If user specified podman run -d -v /dev/shm:/dev/shm ... We were dropping this mount and still using the internal mount. Signed-off-by: Daniel J Walsh <dwalsh@redhat.com>
Diffstat (limited to 'libpod/container_internal_linux.go')
-rw-r--r--libpod/container_internal_linux.go5
1 files changed, 1 insertions, 4 deletions
diff --git a/libpod/container_internal_linux.go b/libpod/container_internal_linux.go
index 93d20491e..0745b7732 100644
--- a/libpod/container_internal_linux.go
+++ b/libpod/container_internal_linux.go
@@ -210,9 +210,6 @@ func (c *Container) generateSpec(ctx context.Context) (*spec.Spec, error) {
g.SetProcessSelinuxLabel(c.ProcessLabel())
g.SetLinuxMountLabel(c.MountLabel())
- // Remove the default /dev/shm mount to ensure we overwrite it
- g.RemoveMount("/dev/shm")
-
// Add bind mounts to container
for dstPath, srcPath := range c.state.BindMounts {
newMount := spec.Mount{
@@ -221,7 +218,7 @@ func (c *Container) generateSpec(ctx context.Context) (*spec.Spec, error) {
Destination: dstPath,
Options: []string{"bind", "private"},
}
- if c.IsReadOnly() {
+ if c.IsReadOnly() && dstPath != "/dev/shm" {
newMount.Options = append(newMount.Options, "ro")
}
if !MountExists(g.Mounts(), dstPath) {