Skip to content

Shared volume mode/propagation not working #9380

Description

@nemchik

Description

Attempting to use :shared on a volume instead instead creates a volume with mode rw and propagation rprivate

Steps to reproduce the issue:
docker-compose.yml file

services:
  test:
    container_name: test
    image: alpine
    volumes:
    - /mnt/test:/mnt/test:shared

docker compose config output

name: test
services:
  test:
    container_name: test
    image: alpine
    networks:
      default: null
    volumes:
    - type: bind
      source: /mnt/test
      target: /mnt/test
      bind:
        propagation: shared
        create_host_path: true
networks:
  default:
    name: test_default

run docker compose up -d

docker inspect test output

[
    {
        "Id": "6d8ea8b6e36c11b7623c1313d0deb04284c3a2c14beca35dbd72635d80f2988b",
        "Created": "2022-04-11T23:54:08.248168714Z",
        "Path": "/bin/sh",
        "Args": [],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-04-11T23:54:10.105565887Z",
            "FinishedAt": "2022-04-11T23:54:10.123330891Z"
        },
        "Image": "sha256:0ac33e5f5afa79e084075e8698a22d574816eea8d7b7d480586835657c3e1c8b",
        "ResolvConfPath": "/var/lib/docker/containers/6d8ea8b6e36c11b7623c1313d0deb04284c3a2c14beca35dbd72635d80f2988b/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/6d8ea8b6e36c11b7623c1313d0deb04284c3a2c14beca35dbd72635d80f2988b/hostname",
        "HostsPath": "/var/lib/docker/containers/6d8ea8b6e36c11b7623c1313d0deb04284c3a2c14beca35dbd72635d80f2988b/hosts",
        "LogPath": "/var/lib/docker/containers/6d8ea8b6e36c11b7623c1313d0deb04284c3a2c14beca35dbd72635d80f2988b/6d8ea8b6e36c11b7623c1313d0deb04284c3a2c14beca35dbd72635d80f2988b-json.log",
        "Name": "/test",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/mnt/test:/mnt/test:rw"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "test_default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": null,
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/cadf74c817fdd1e9faa578088667d255f1796a5dfacaed1040b3742c1114f3be-init/diff:/var/lib/docker/overlay2/638430a0acc2601a319ee03ae839448eb5b328f3f12465b1855ea63dadb5a96d/diff",
                "MergedDir": "/var/lib/docker/overlay2/cadf74c817fdd1e9faa578088667d255f1796a5dfacaed1040b3742c1114f3be/merged",
                "UpperDir": "/var/lib/docker/overlay2/cadf74c817fdd1e9faa578088667d255f1796a5dfacaed1040b3742c1114f3be/diff",
                "WorkDir": "/var/lib/docker/overlay2/cadf74c817fdd1e9faa578088667d255f1796a5dfacaed1040b3742c1114f3be/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mnt/test",
                "Destination": "/mnt/test",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],
        "Config": {
            "Hostname": "6d8ea8b6e36c",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": true,
            "AttachStderr": true,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh"
            ],
            "Image": "alpine",
            "Volumes": {
                "/mnt/test": {}
            },
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "8ec02ba42ee5418fd4260161447bea91ff2068c920102ebcc03eb43ad06fb362",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.depends_on": "",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "test",
                "com.docker.compose.project.config_files": "/home/castor/test/docker-compose.yml",
                "com.docker.compose.project.working_dir": "/home/castor/test",
                "com.docker.compose.service": "test",
                "com.docker.compose.version": "2.4.1"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "b348dda01772880dde375358a6689bb93fedaa51efeb0fa4ab3bc855205f1610",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/b348dda01772",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "test_default": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "test",
                        "test",
                        "6d8ea8b6e36c"
                    ],
                    "NetworkID": "8aa5fa473b730d00498166d0bfdf36f19e7c1de424d53ee32e4a39de03b14497",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]

Describe the results you received:

Shown above in the docker inspect test output, specifically this section:

        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mnt/test",
                "Destination": "/mnt/test",
                "Mode": "rw",
                "RW": true,
                "Propagation": "rprivate"
            }
        ],

Describe the results you expected:

The container should be created with a shared volume

        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mnt/test",
                "Destination": "/mnt/test",
                "Mode": "shared",
                "RW": true,
                "Propagation": "shared"
            }
        ],

Additional information you deem important (e.g. issue happens only occasionally):

Output of docker compose version:

Docker Compose version v2.4.1

Output of docker info:

Client:
 Context:    default
 Debug Mode: false
 Plugins:
  app: Docker App (Docker Inc., v0.9.1-beta3)
  buildx: Docker Buildx (Docker Inc., v0.8.1-docker)
  compose: Docker Compose (Docker Inc., v2.4.1)
  scan: Docker Scan (Docker Inc., v0.17.0)

Server:
 Containers: 10
  Running: 9
  Paused: 0
  Stopped: 1
 Images: 15
 Server Version: 20.10.14
 Storage Driver: overlay2
  Backing Filesystem: extfs
  Supports d_type: true
  Native Overlay Diff: true
  userxattr: false
 Logging Driver: json-file
 Cgroup Driver: cgroupfs
 Cgroup Version: 1
 Plugins:
  Volume: local
  Network: bridge host ipvlan macvlan null overlay
  Log: awslogs fluentd gcplogs gelf journald json-file local logentries splunk syslog
 Swarm: inactive
 Runtimes: io.containerd.runtime.v1.linux runc io.containerd.runc.v2
 Default Runtime: runc
 Init Binary: docker-init
 containerd version: 3df54a852345ae127d1fa3092b95168e4a88e2f8
 runc version: v1.0.3-0-gf46b6ba
 init version: de40ad0
 Security Options:
  apparmor
  seccomp
   Profile: default
 Kernel Version: 5.4.0-107-generic
 Operating System: Ubuntu 20.04.4 LTS
 OSType: linux
 Architecture: x86_64
 CPUs: 4
 Total Memory: 7.771GiB
 Name: vmi439163.contaboserver.net
 ID: 7T6T:3I4A:7YWK:7LBC:WFRY:4T7G:AXO5:QFWT:E6JL:WFXU:LSRX:LVB2
 Docker Root Dir: /var/lib/docker
 Debug Mode: false
 Registry: https://index.docker.io/v1/
 Labels:
 Experimental: false
 Insecure Registries:
  127.0.0.0/8
 Live Restore Enabled: false

Additional environment details:

Using compose v1 here are the differences:

/usr/local/bin/docker-compose-v1 version output

docker-compose version 1.29.2, build 5becea4c
docker-py version: 5.0.0
CPython version: 3.8.10
OpenSSL version: OpenSSL 1.1.1f  31 Mar 2020

/usr/local/bin/docker-compose-v1 config output

services:
  test:
    container_name: test
    image: alpine
    volumes:
    - /mnt/test:/mnt/test:shared
version: '3.9'

run /usr/local/bin/docker-compose-v1 up -d

docker inspect test output

[
    {
        "Id": "853fd32f0ad83bbcade7a489228508cdb518271adc7b7446effe0c3669867ea7",
        "Created": "2022-04-12T00:08:44.211758995Z",
        "Path": "/bin/sh",
        "Args": [],
        "State": {
            "Status": "exited",
            "Running": false,
            "Paused": false,
            "Restarting": false,
            "OOMKilled": false,
            "Dead": false,
            "Pid": 0,
            "ExitCode": 0,
            "Error": "",
            "StartedAt": "2022-04-12T00:08:45.496652188Z",
            "FinishedAt": "2022-04-12T00:08:45.511877452Z"
        },
        "Image": "sha256:0ac33e5f5afa79e084075e8698a22d574816eea8d7b7d480586835657c3e1c8b",
        "ResolvConfPath": "/var/lib/docker/containers/853fd32f0ad83bbcade7a489228508cdb518271adc7b7446effe0c3669867ea7/resolv.conf",
        "HostnamePath": "/var/lib/docker/containers/853fd32f0ad83bbcade7a489228508cdb518271adc7b7446effe0c3669867ea7/hostname",
        "HostsPath": "/var/lib/docker/containers/853fd32f0ad83bbcade7a489228508cdb518271adc7b7446effe0c3669867ea7/hosts",
        "LogPath": "/var/lib/docker/containers/853fd32f0ad83bbcade7a489228508cdb518271adc7b7446effe0c3669867ea7/853fd32f0ad83bbcade7a489228508cdb518271adc7b7446effe0c3669867ea7-json.log",
        "Name": "/test",
        "RestartCount": 0,
        "Driver": "overlay2",
        "Platform": "linux",
        "MountLabel": "",
        "ProcessLabel": "",
        "AppArmorProfile": "docker-default",
        "ExecIDs": null,
        "HostConfig": {
            "Binds": [
                "/mnt/test:/mnt/test:shared"
            ],
            "ContainerIDFile": "",
            "LogConfig": {
                "Type": "json-file",
                "Config": {}
            },
            "NetworkMode": "test_default",
            "PortBindings": {},
            "RestartPolicy": {
                "Name": "",
                "MaximumRetryCount": 0
            },
            "AutoRemove": false,
            "VolumeDriver": "",
            "VolumesFrom": [],
            "CapAdd": null,
            "CapDrop": null,
            "CgroupnsMode": "host",
            "Dns": null,
            "DnsOptions": null,
            "DnsSearch": null,
            "ExtraHosts": null,
            "GroupAdd": null,
            "IpcMode": "private",
            "Cgroup": "",
            "Links": null,
            "OomScoreAdj": 0,
            "PidMode": "",
            "Privileged": false,
            "PublishAllPorts": false,
            "ReadonlyRootfs": false,
            "SecurityOpt": null,
            "UTSMode": "",
            "UsernsMode": "",
            "ShmSize": 67108864,
            "Runtime": "runc",
            "ConsoleSize": [
                0,
                0
            ],
            "Isolation": "",
            "CpuShares": 0,
            "Memory": 0,
            "NanoCpus": 0,
            "CgroupParent": "",
            "BlkioWeight": 0,
            "BlkioWeightDevice": null,
            "BlkioDeviceReadBps": null,
            "BlkioDeviceWriteBps": null,
            "BlkioDeviceReadIOps": null,
            "BlkioDeviceWriteIOps": null,
            "CpuPeriod": 0,
            "CpuQuota": 0,
            "CpuRealtimePeriod": 0,
            "CpuRealtimeRuntime": 0,
            "CpusetCpus": "",
            "CpusetMems": "",
            "Devices": null,
            "DeviceCgroupRules": null,
            "DeviceRequests": null,
            "KernelMemory": 0,
            "KernelMemoryTCP": 0,
            "MemoryReservation": 0,
            "MemorySwap": 0,
            "MemorySwappiness": null,
            "OomKillDisable": false,
            "PidsLimit": null,
            "Ulimits": null,
            "CpuCount": 0,
            "CpuPercent": 0,
            "IOMaximumIOps": 0,
            "IOMaximumBandwidth": 0,
            "MaskedPaths": [
                "/proc/asound",
                "/proc/acpi",
                "/proc/kcore",
                "/proc/keys",
                "/proc/latency_stats",
                "/proc/timer_list",
                "/proc/timer_stats",
                "/proc/sched_debug",
                "/proc/scsi",
                "/sys/firmware"
            ],
            "ReadonlyPaths": [
                "/proc/bus",
                "/proc/fs",
                "/proc/irq",
                "/proc/sys",
                "/proc/sysrq-trigger"
            ]
        },
        "GraphDriver": {
            "Data": {
                "LowerDir": "/var/lib/docker/overlay2/98e6401683210e4387b2e1378b0f1d03522102bdd9ea38565a31eca3c214ee62-init/diff:/var/lib/docker/overlay2/638430a0acc2601a319ee03ae839448eb5b328f3f12465b1855ea63dadb5a96d/diff",
                "MergedDir": "/var/lib/docker/overlay2/98e6401683210e4387b2e1378b0f1d03522102bdd9ea38565a31eca3c214ee62/merged",
                "UpperDir": "/var/lib/docker/overlay2/98e6401683210e4387b2e1378b0f1d03522102bdd9ea38565a31eca3c214ee62/diff",
                "WorkDir": "/var/lib/docker/overlay2/98e6401683210e4387b2e1378b0f1d03522102bdd9ea38565a31eca3c214ee62/work"
            },
            "Name": "overlay2"
        },
        "Mounts": [
            {
                "Type": "bind",
                "Source": "/mnt/test",
                "Destination": "/mnt/test",
                "Mode": "shared",
                "RW": true,
                "Propagation": "shared"
            }
        ],
        "Config": {
            "Hostname": "853fd32f0ad8",
            "Domainname": "",
            "User": "",
            "AttachStdin": false,
            "AttachStdout": false,
            "AttachStderr": false,
            "Tty": false,
            "OpenStdin": false,
            "StdinOnce": false,
            "Env": [
                "PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin"
            ],
            "Cmd": [
                "/bin/sh"
            ],
            "Image": "alpine",
            "Volumes": {
                "/mnt/test": {}
            },
            "WorkingDir": "",
            "Entrypoint": null,
            "OnBuild": null,
            "Labels": {
                "com.docker.compose.config-hash": "9d2afe52cfd02d462058a7f438ac9606bfd0f82b56b3e9d4f647e34235f3c20a",
                "com.docker.compose.container-number": "1",
                "com.docker.compose.oneoff": "False",
                "com.docker.compose.project": "test",
                "com.docker.compose.project.config_files": "docker-compose.yml",
                "com.docker.compose.project.working_dir": "/home/castor/test",
                "com.docker.compose.service": "test",
                "com.docker.compose.version": "1.29.2"
            }
        },
        "NetworkSettings": {
            "Bridge": "",
            "SandboxID": "e997ba118c274d5fbb657b42426eaf90065ef16342907f2a06e71b155fb9673b",
            "HairpinMode": false,
            "LinkLocalIPv6Address": "",
            "LinkLocalIPv6PrefixLen": 0,
            "Ports": {},
            "SandboxKey": "/var/run/docker/netns/e997ba118c27",
            "SecondaryIPAddresses": null,
            "SecondaryIPv6Addresses": null,
            "EndpointID": "",
            "Gateway": "",
            "GlobalIPv6Address": "",
            "GlobalIPv6PrefixLen": 0,
            "IPAddress": "",
            "IPPrefixLen": 0,
            "IPv6Gateway": "",
            "MacAddress": "",
            "Networks": {
                "test_default": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "test",
                        "853fd32f0ad8"
                    ],
                    "NetworkID": "25fed5eb46b3e151cb497fbf7676204c4cc3e6498ee425ce41ed91614e93fb43",
                    "EndpointID": "",
                    "Gateway": "",
                    "IPAddress": "",
                    "IPPrefixLen": 0,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "",
                    "DriverOpts": null
                }
            }
        }
    }
]

Activity

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Metadata

Metadata

Assignees

Labels

No labels
No labels

Type

No type

Projects

No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions