도커에서 aufs를 어떻게 사용하는지 알아보자.

기본 파일 저장 방식

docker pull 명령을 사용하여 가져온다.

# docker pull ubuntu
Using default tag: latest
latest: Pulling from library/ubuntu

90d6565b970a: Downloading [=============================>                     ] 28.95 MB/49.26 MB
...
90d6565b970a: Download complete
40553bdb8474: Download complete 
c3129e7479ab: Download complete 
091663bd70db: Download complete 
Digest: sha256:ba1688fec34f66d8a7ff5b42e6971625d8232c72bf0e38ad06dda10cad157293
Status: Downloaded newer image for ubuntu:latest

ubuntu:latest 이미지를 다운로드했다. 다운로드는 네 개의 파일을 받아서 하나의 ubuntu 이미지를 생성한다. 이미지 정보를 확인하면 다음과 같다.

# docker images
REPOSITORY          TAG                 IMAGE ID            CREATED             SIZE
ubuntu              latest              cf62323fa025        5 days ago          125 MB

이 이미지는 도커 호스트 인스턴스 내 /var/lib/docker에 저장된다. 사용하는 스토리지 드라이버에 따라 다르지만, 만약 도커 호스트가 aufs 파일 시스템을 사용하고 있다면 /var/lib/docker/aufs에 저장이 된다. 다른 스토리지 드라이버를 사용한다면 aufs부분이 해당 드라이버로 바뀔 것이다.

이미지는 여러 개의 diff로 구성이 된다.

컨테이너가 사용하는 diff 이미지

도커 1.10 버전 이후부터는 /var/lib/docker/aufs/mnt/ 안에 있는 init-id, mount-id 파일에 컨테이너가 사용하는 diff id를 알 수 있다. 컨테이너 안에서 파일을 쓰고 지우는 작업들은 /var/lib/docker/aufs/diff/ 에 기록되므로, 실제로 여기에 이동해 보면 변경된 파일을 확인할 수 있다.

# docker run --name="cublr" -t -i ubuntu /bin/bash

root@03afde314b38:/# cd /root/
root@03afde314b38:~# touch cublr_now_here 
root@03afde314b38:~# ls -la
total 16
drwx------  2 root root 4096 Jul 15 02:55 .
drwxr-xr-x 34 root root 4096 Jul 15 02:55 ..
-rw-r--r--  1 root root 3106 Oct 22  2015 .bashrc
-rw-r--r--  1 root root  148 Aug 17  2015 .profile
-rw-r--r--  1 root root    0 Jul 15 02:55 cublr_now_here
root@03afde314b38:~# exit

# sudo docker ps -a
CONTAINER ID        IMAGE               COMMAND             CREATED              STATUS                            PORTS               NAMES
03afde314b38        ubuntu              "/bin/bash"         About a minute ago   Exited (0) 8 seconds ago                              cublr
# cd /var/lib/docker/image/aufs/layerdb/mounts/03afde314b38135d8e886fd0acea4e16a23ac974fc6e973bf8965f4ef7353311/
# ls
init-id  mount-id  parent
# cat init-id 
8d92ea5001506d00cce715f7a84dc520235035166eb9becff9ec104668cf66a5-init
# cat mount-id 
8d92ea5001506d00cce715f7a84dc520235035166eb9becff9ec104668cf66a5

# cd /var/lib/docker/aufs/diff
# ls -la
total 40
drwx------ 10 root root 4096 Jul 15 02:55 .
drwx------  5 root root 4096 Jul 14 10:01 ..
drwxr-xr-x  6 root root 4096 Jul 14 10:17 0773a6680a38afea9ea373cacd9264cb68262c17400b28b0bbaae74a10b85892
drwxr-xr-x 21 root root 4096 Jul 14 10:17 08b520772cf1f1c657e2bf1e593a1f66fb23dc5011236f7b0ada1e74ddf8824b
drwxr-xr-x  5 root root 4096 Jul 15 02:55 8d92ea5001506d00cce715f7a84dc520235035166eb9becff9ec104668cf66a5
drwxr-xr-x  6 root root 4096 Jul 15 02:55 8d92ea5001506d00cce715f7a84dc520235035166eb9becff9ec104668cf66a5-init
drwxr-xr-x  3 root root 4096 Jul 14 10:17 a15ee2d88a7810aa8a98e4918d54b85f7f93b4b21de8a49f507914b9f260d669
drwxr-xr-x  3 root root 4096 Jul 14 10:17 ea690b73b514839a1b210bf0972e74050c58d5d37f978fe4834c7341d19f5a5d
# cd 8d92ea5001506d00cce715f7a84dc520235035166eb9becff9ec104668cf66a5-init/
# ls -la
total 24
drwxr-xr-x  6 root root 4096 Jul 15 02:55 .
drwx------ 10 root root 4096 Jul 15 02:55 ..
drwxr-xr-x  2 root root 4096 Jul 15 02:55 dev
-rwxr-xr-x  1 root root    0 Jul 15 02:55 .dockerenv
drwxr-xr-x  2 root root 4096 Jul 15 02:55 etc
-r--r--r--  1 root root    0 Jul 15 02:55 .wh..wh.aufs
drwx------  2 root root 4096 Jul 15 02:55 .wh..wh.orph
drwx------  2 root root 4096 Jul 15 02:55 .wh..wh.plnk

# cd ..
# cd 8d92ea5001506d00cce715f7a84dc520235035166eb9becff9ec104668cf66a5
# ls -la
total 20
drwxr-xr-x  5 root root 4096 Jul 15 02:55 .
drwx------ 10 root root 4096 Jul 15 02:55 ..
drwx------  2 root root 4096 Jul 15 02:55 root
-r--r--r--  1 root root    0 Jul 15 02:55 .wh..wh.aufs
drwx------  2 root root 4096 Jul 15 02:55 .wh..wh.orph
drwx------  2 root root 4096 Jul 15 02:55 .wh..wh.plnk
# cd root/
# ls -la
total 12
drwx------ 2 root root 4096 Jul 15 02:55 .
drwxr-xr-x 5 root root 4096 Jul 15 02:55 ..
-rw------- 1 root root   45 Jul 15 02:55 .bash_history
-rw-r--r-- 1 root root    0 Jul 15 02:55 cublr_now_here