Please help understand Docker disk space usage inside a running container.
For example if I use the official amazonlinux image
Don’t have it yet:
$ docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
haproxy 1.7 5b9524daa586 2 weeks ago 136 MB
Get it:
$ docker pull amazonlinux
Using default tag: latest
latest: Pulling from library/amazonlinux
d156a59f90d6: Already exists
Digest: sha256:cbf93d4d2c01aa2da7cfaa157682296651219f245aad92ea12f8a85be6042eef
Status: Downloaded newer image for amazonlinux:latest
Now I have it:
$ docker image list
REPOSITORY TAG IMAGE ID CREATED SIZE
haproxy 1.7 5b9524daa586 2 weeks ago 136 MB
amazonlinux latest 657ee1370452 8 days ago 162 MB
Run it to show df -h output lists 60GB disk, with 16 GB used? WTF…
$ docker run -it -h amazonlinux amazonlinux
bash-4.2# df -h
Filesystem Size Used Avail Use% Mounted on
none 60G 16G 41G 29% /
tmpfs 1000M 0 1000M 0% /dev
tmpfs 1000M 0 1000M 0% /sys/fs/cgroup
/dev/vda2 60G 16G 41G 29% /etc/hosts
shm 64M 0 64M 0% /dev/shm
tmpfs 1000M 0 1000M 0% /sys/firmware
bash-4.2# exit
exit
When I look at the Dockerfile for amazonlinux it basically boils down to ‘scratch’ which is nothing, and a root_fs.tar.gz file.
Official amazonlinux Dockerfile
FROM scratch
ADD amzn-container-minimal-2017.03.1.20170812-x86_64.tar.xz /
CMD ["/bin/bash"]
If I download amzn-container-minimal-2017.03.1.20170812-x86_64.tar.xz and extract it I can not find anything that would configure a 40gb disk or use 10gb.
On my local laptop I have extracted the downloaded root_fs tar gz file to a directory named aws_root_fs
Show size of root fs when extracted:
$ du -hs aws_root_fs
169M aws_root_fs
$ cd aws_root_fs/
$ ls -la
total 0
drwxr-xr-x@ 22 ubuckza PEROOT\Domain Users 748 Sep 7 09:43 .
drwxr-xr-x 8 ubuckza PEROOT\Domain Users 272 Sep 7 09:43 …
dr-xr-xr-x@ 50 ubuckza PEROOT\Domain Users 1700 Aug 12 19:15 bin
dr-xr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Jan 6 2012 boot
drwxr-xr-x@ 3 ubuckza PEROOT\Domain Users 102 Jan 6 2012 dev
drwxr-xr-x@ 87 ubuckza PEROOT\Domain Users 2958 Sep 7 09:46 etc
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Jan 6 2012 home
dr-xr-xr-x@ 4 ubuckza PEROOT\Domain Users 136 Aug 12 19:15 lib
dr-xr-xr-x@ 99 ubuckza PEROOT\Domain Users 3366 Aug 12 19:15 lib64
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Aug 12 19:15 local
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Jan 6 2012 media
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Jan 6 2012 mnt
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Jan 6 2012 opt
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Aug 12 19:15 proc
dr-xr-x—@ 2 ubuckza PEROOT\Domain Users 68 Jan 6 2012 root
dr-xr-xr-x@ 6 ubuckza PEROOT\Domain Users 204 Aug 12 19:15 sbin
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Jan 6 2012 selinux
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Jan 6 2012 srv
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Aug 12 19:15 sys
drwxr-xr-x@ 2 ubuckza PEROOT\Domain Users 68 Aug 12 19:15 tmp
drwxr-xr-x@ 14 ubuckza PEROOT\Domain Users 476 Aug 12 19:15 usr
drwxr-xr-x@ 19 ubuckza PEROOT\Domain Users 646 Aug 12 19:15 var
$ du -hs *
3.7M bin
0B boot
4.0K dev
4.4M etc
0B home
32K lib
11M lib64
0B local
0B media
0B mnt
0B opt
0B proc
0B root
1.8M sbin
0B selinux
0B srv
0B sys
0B tmp
140M usr
8.0M var
Back inside the running container:
bash-4.2# cat /etc/fstab
LABEL=/ / auto defaults,noatime 1 1
tmpfs /dev/shm tmpfs defaults 0 0
devpts /dev/pts devpts gid=5,mode=620 0 0
sysfs /sys sysfs defaults 0 0
proc /proc proc defaults 0 0
bash-4.2#
bash-4.2# cat mounts
none / aufs rw,relatime,si=7759fedf590fd1ea,dio,dirperm1 0 0
proc /proc proc rw,nosuid,nodev,noexec,relatime 0 0
tmpfs /dev tmpfs rw,nosuid,mode=755 0 0
devpts /dev/pts devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=666 0 0
sysfs /sys sysfs ro,nosuid,nodev,noexec,relatime 0 0
tmpfs /sys/fs/cgroup tmpfs ro,nosuid,nodev,noexec,relatime,mode=755 0 0
openrc /sys/fs/cgroup/openrc cgroup ro,nosuid,nodev,noexec,relatime,release_agent=/lib/rc/sh/cgroup-release-agent.sh,name=openrc 0 0
cpuset /sys/fs/cgroup/cpuset cgroup ro,nosuid,nodev,noexec,relatime,cpuset 0 0
cpu /sys/fs/cgroup/cpu cgroup ro,nosuid,nodev,noexec,relatime,cpu 0 0
cpuacct /sys/fs/cgroup/cpuacct cgroup ro,nosuid,nodev,noexec,relatime,cpuacct 0 0
blkio /sys/fs/cgroup/blkio cgroup ro,nosuid,nodev,noexec,relatime,blkio 0 0
memory /sys/fs/cgroup/memory cgroup ro,nosuid,nodev,noexec,relatime,memory 0 0
devices /sys/fs/cgroup/devices cgroup ro,nosuid,nodev,noexec,relatime,devices 0 0
freezer /sys/fs/cgroup/freezer cgroup ro,nosuid,nodev,noexec,relatime,freezer 0 0
net_cls /sys/fs/cgroup/net_cls cgroup ro,nosuid,nodev,noexec,relatime,net_cls 0 0
perf_event /sys/fs/cgroup/perf_event cgroup ro,nosuid,nodev,noexec,relatime,perf_event 0 0
net_prio /sys/fs/cgroup/net_prio cgroup ro,nosuid,nodev,noexec,relatime,net_prio 0 0
hugetlb /sys/fs/cgroup/hugetlb cgroup ro,nosuid,nodev,noexec,relatime,hugetlb 0 0
pids /sys/fs/cgroup/pids cgroup ro,nosuid,nodev,noexec,relatime,pids 0 0
cgroup /sys/fs/cgroup/systemd cgroup ro,nosuid,nodev,noexec,relatime,name=systemd 0 0
mqueue /dev/mqueue mqueue rw,nosuid,nodev,noexec,relatime 0 0
/dev/vda2 /etc/resolv.conf ext4 rw,relatime,data=ordered 0 0
/dev/vda2 /etc/hostname ext4 rw,relatime,data=ordered 0 0
/dev/vda2 /etc/hosts ext4 rw,relatime,data=ordered 0 0
shm /dev/shm tmpfs rw,nosuid,nodev,noexec,relatime,size=65536k 0 0
devpts /dev/console devpts rw,nosuid,noexec,relatime,gid=5,mode=620,ptmxmode=000 0 0
proc /proc/bus proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/fs proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/irq proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/sys proc ro,nosuid,nodev,noexec,relatime 0 0
proc /proc/sysrq-trigger proc ro,nosuid,nodev,noexec,relatime 0 0
tmpfs /proc/kcore tmpfs rw,nosuid,mode=755 0 0
tmpfs /proc/timer_list tmpfs rw,nosuid,mode=755 0 0
tmpfs /proc/sched_debug tmpfs rw,nosuid,mode=755 0 0
tmpfs /sys/firmware tmpfs ro,relatime 0 0
bash-4.2#
Please help me understand what I am missing here?