Dockerでダウンロードしたファイルはどこに置かれるのか

昨日に続いてDockerをさわってみた話です。

docker run ... で自動的にルートファイルシステムがダウンロードされますが、それらのファイルはいったいどこに置かれたのでしょうか?
カレントディレクトリには何も新しいファイルはできていません。ダウンロードしたのはubuntubusyboxのルートファイルシステムなので、それらしい名前で新しくファイルができていないか探したのですが見つかりません。
それでもうまく動いているのですから気にしなくてもいいとも言えるのですが、私としてはわからないのは気持ちが悪い。少なくともギガバイトのサイズをダウンロードしたはずなのに、いったいどこに消えてしまったのか?

ようやく見つけたヒントがこれ。
コンテナの中のプロセスの/proc/self/mountinfo を見るとそれらしいディレクトリが見つかりました。

$ docker run -it busybox cat /proc/self/mountinfo
81 48 0:37 / / rw,relatime - aufs none rw,si=dd4c1e0e1d1a2e1c
82 81 0:39 / /proc rw,nosuid,nodev,noexec,relatime - proc proc rw
83 81 0:40 / /sys ro,relatime - sysfs sysfs ro
84 81 0:41 / /dev rw,nosuid - tmpfs tmpfs rw,mode=755
85 84 0:42 / /dev/shm rw,nosuid,nodev,noexec,relatime - tmpfs shm rw,size=65536k
86 84 0:43 / /dev/pts rw,nosuid,noexec,relatime - devpts devpts rw,gid=5,mode=620,ptmxmode=666
87 81 8:1 /var/lib/docker/init/dockerinit-1.0.1-dev /.dockerinit ro,relatime - ext4 /dev/disk/by-uuid/29ad72a0-27da-42e3-9f5f-3a13990ab837 rw,errors=remount-ro,data=ordered
88 81 0:16 /resolvconf/resolv.conf /etc/resolv.conf ro,relatime - tmpfs tmpfs rw,size=404108k,mode=755
89 81 8:1 /var/lib/docker/containers/d37d6c8e7de990094775c91dc1832f9ed30d10a0a554557ccb487263282a59cd/hostname /etc/hostname ro,relatime - ext4 /dev/disk/by-uuid/29ad72a0-27da-42e3-9f5f-3a13990ab837 rw,errors=remount-ro,data=ordered
90 81 8:1 /var/lib/docker/containers/d37d6c8e7de990094775c91dc1832f9ed30d10a0a554557ccb487263282a59cd/hosts /etc/hosts ro,relatime - ext4 /dev/disk/by-uuid/29ad72a0-27da-42e3-9f5f-3a13990ab837 rw,errors=remount-ro,data=ordered
91 84 0:12 /5 /dev/console rw,nosuid,noexec,relatime - devpts devpts rw,gid=5,mode=620,ptmxmode=000
50 82 0:39 /sys /proc/sys ro,nosuid,nodev,noexec,relatime - proc proc rw
52 82 0:39 /sysrq-trigger /proc/sysrq-trigger ro,nosuid,nodev,noexec,relatime - proc proc rw
53 82 0:39 /irq /proc/irq ro,nosuid,nodev,noexec,relatime - proc proc rw
54 82 0:39 /bus /proc/bus ro,nosuid,nodev,noexec,relatime - proc proc rw
55 82 0:41 /null /proc/kcore rw,nosuid - tmpfs tmpfs rw,mode=755

/var/lib/dockerを調べてみます。

$ ls -l /var/lib/docker
ls: cannot open directory /var/lib/docker: Permission denied
$ ls -ld /var/lib/docker
drwx------ 9 root root 4096 Jun 25 22:59 /var/lib/docker

このディレクトリはrootにしかアクセス権限がありません。

$ sudo bash
[sudo] password for koba: 
# cd /var/lib/docker
# ls
aufs  containers  execdriver  graph  init  linkgraph.db  repositories-aufs  vfs  volumes
# du -s -h *
3.6G	aufs
4.0M	containers
8.0K	execdriver
808K	graph
25M	init
16K	linkgraph.db
4.0K	repositories-aufs
8.0K	vfs
8.0K	volumes
#

見つけました。ギガバイトサイズのルートファイルシステムはaufsのフォーマットで格納されていました。

補足

先ほどの/proc/self/mountinfoを見ると、/.dockerinit, /etc/resolv.conf, /etc/hostname, /etc/hostsなどは単一のファイルがmountされています。
てっきりmountはディレクトリに対して行うものだとばかり思っていましたが、ファイル単位でmountもできるんですね。

追記(2014.0626): /var/lib/docker を移動する

/var/lib のディスクの容量にそんなに余裕がないと思ったので、別のディスクにある/proj の下に引っ越しました。
以下のようにしたらできました。
root権限のshellで

# mkdir -p /proj/var/lib
# service docker stop
# mv /var/lib/docker /proj/var/lib/
# cd /var/lib/
# mv docker docker.org
# ln -s /proj/var/lib/dorcker .
# service docker start

(Ubuntu 14.04の場合はサービス名をdocker.ioに変更。)