Docker bind mount behavior

I have encountered some weird behavior with Docker bind mounts that I do not understand. I hope someone can explain this to me.

When I run du -h / on my host, I get:

Filesystem                Size      Used Available Use% Mounted on
overlay                  19.7G      1.3G     17.4G   7% /
tmpfs                   495.4M    259.9M    235.6M  52% /home/docker

But docker run -v /:/mnt/root alpine:latest df -h /mnt/root gives me:

Filesystem                Size      Used Available Use% Mounted on
tmpfs                   495.4M    259.9M    235.6M  52% /mnt/root

While the mount contents seem to be right, my expectation was that the mount will have the same size as the source.

Note that my host is actually a docker container that has a bind mount on the real host’s docker socket.

Output of docker version

 Version:      17.10.0-ce
 API version:  1.33
 Go version:   go1.8.3
 Git commit:   f4ffd2511c
 Built:        Wed Oct 18 00:21:18 2017
 OS/Arch:      linux/amd64

 Version:      17.10.0-ce
 API version:  1.33 (minimum version 1.12)
 Go version:   go1.8.3
 Git commit:   f4ffd2511c
 Built:        Wed Oct 18 00:26:36 2017
 OS/Arch:      linux/amd64
 Experimental: true

Output of docker info

Containers: 19
 Running: 6
 Paused: 0
 Stopped: 13
Images: 7
Server Version: 17.10.0-ce
Storage Driver: overlay2
 Backing Filesystem: extfs
 Supports d_type: true
 Native Overlay Diff: true
Logging Driver: awslogs
Cgroup Driver: cgroupfs
 Volume: local
 Network: bridge host ipvlan macvlan null overlay
 Log: awslogs fluentd gcplogs gelf journald json-file logentries splunk syslog
Swarm: active
 NodeID: y95v7q3pc1kpph1jntq8fdjws
 Is Manager: true
 ClusterID: z9iidiwwx4nh0x7h411832g1e
 Managers: 1
 Nodes: 5
  Task History Retention Limit: 5
  Snapshot Interval: 10000
  Number of Old Snapshots to Retain: 0
  Heartbeat Tick: 1
  Election Tick: 3
  Heartbeat Period: 5 seconds
 CA Configuration:
  Expiry Duration: 3 months
  Force Rotate: 0
 Autolock Managers: false
 Root Rotation In Progress: false
 Node Address:
 Manager Addresses:
Runtimes: runc
Default Runtime: runc
Init Binary: docker-init
containerd version: 06b9cb35161009dcb7123345749fef02f7cea8e0
runc version: 0351df1c5a66838d0c392b4ac4cf9450de844e2d
init version: 949e6fa
Security Options:
  Profile: default
Kernel Version: 4.9.52-moby
Operating System: Alpine Linux v3.5
OSType: linux
Architecture: x86_64
CPUs: 1
Total Memory: 990.9MiB
Docker Root Dir: /var/lib/docker
Debug Mode (client): false
Debug Mode (server): true
 File Descriptors: 94
 Goroutines: 186
 System Time: 2017-12-11T11:14:40.828251573Z
 EventsListeners: 0
Experimental: true
Insecure Registries:
Live Restore Enabled: false