125
120

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?

More than 5 years have passed since last update.

dockerはOS上のディスク領域をどう使っているのかまとめた

Last updated at Posted at 2015-07-15

#dockerのディスクの使用方法

##dataとmetadata
dockerはディスクの管理方法として、dm-thinというDeviceMapperの機能を使います。
詳細は以下を参考にして下さい。

dm-thinではデータ領域とメタデータ領域が必要なため、dockerは/var/lib/docker/devicemapper/devicemapperdataというデバイスファイルイメージと、metadataというデータを作成します。

fileコマンドで確認するとdataはext4 filesystemです

[root@master mnt]# ls -lh /var/lib/docker/devicemapper/devicemapper
合計 8.5G
-rw-------. 1 root root 100G  7月 15 11:27 data
-rw-------. 1 root root 2.0G  7月 15 11:14 metadata

[root@master mnt]# file /var/lib/docker/devicemapper/devicemapper/*
/var/lib/docker/devicemapper/devicemapper/data:     Linux rev 1.0 ext4 filesystem data, UUID=8ee719d1-ac3e-48a7-8bc8-62315601204c (extents) (64bit) (large files) (huge files)
/var/lib/docker/devicemapper/devicemapper/metadata: data

##ループバックデバイス

dockerは作成したdatametadataをデバイスにするためにループバックデバイスというLinuxの機能を使います。
※ループバックデバイス はディスクイメージファイルに対して、デバイスファイルを割り当てて、物理ディスクのよう に利用する機能です

[root@master mnt]# losetup
NAME       SIZELIMIT OFFSET AUTOCLEAR RO BACK-FILE
/dev/loop0         0      0         1  0 /var/lib/docker/devicemapper/devicemapper/data
/dev/loop1         0      0         1  0 /var/lib/docker/devicemapper/devicemapper/metadata
  • data→/dev/loop0
  • metadata→/dev/loop1
[root@master mnt]# lsblk
NAME                                 MAJ:MIN RM   SIZE RO TYPE MOUNTPOINT
fd0                                    2:0    1     4K  0 disk
sda                                    8:0    0   200G  0 disk
sda1                                   8:1    0   500M  0 part /boot
sda2                                   8:2    0 199.5G  0 part
  centos-swap                        253:0    0  10.8G  0 lvm  [SWAP]
  centos-root                        253:1    0    50G  0 lvm  /
  centos-home                        253:2    0 138.8G  0 lvm  /home
sr0                                   11:0    1  1024M  0 rom
loop0                                  7:0    0   100G  0 loop
docker-253:1-6851-pool               253:3    0   100G  0 dm
  docker-253:1-6851-22f3507a1...     253:4    0    10G  0 dm
  docker-253:1-6851-2cf034932...     253:5    0    10G  0 dm
loop1                                  7:1    0     2G  0 loop
docker-253:1-6851-pool               253:3    0   100G  0 dm
  docker-253:1-6851-22f3507a1...     253:4    0    10G  0 dm
  docker-253:1-6851-2cf034932...     253:5    0    10G  0 dm

loop0は、docker-253:1-6851-poolに100Gを割り当て、docker-253:1-6851-xxxx…にそれぞれ10Gづつ割り振っています。

ちなみにdocker-253:1-6851-pool/dev/mapper/docker-253:1-6851-xxx....はただのシンボリックリンクで、裏側にはDeviceMapperで作成された論理デバイスが存在します。

[root@master devicemapper]# ls -ltr /dev/mapper/docker-253\:1-6851-xxx...
lrwxrwxrwx 1 root root 8  7月 15 11:42 /dev/mapper/docker-253:1-6851-xxx...-> ../dm-19

###dataとmetadata領域の保存先を変更する方法

こちらにも書いていますが/etc/sysconfig/docker-storageにて設定が可能です。

/etc/sysconfig/docker-storage
DOCKER_STORAGE_OPTIONS = --storage-opt dm.metadatadev=/dev/mylogvol/my-docker-metadata --storage-opt dm.datadev=/dev/mylogvol/my-docker-data

ちなみに公式ではこんなことを言っています。ループバックデバイスは遅いらしいですね。


The loopback makes it slower, and there are some restrictive defaults, such as 100GB max storage

##コンテナで確認
dockerコンテナにログインしてdf -hを叩くと、先ほど確認したdocker-253:1-6851-xxxx…/領域にマウントされていることが確認できますね。

[root@5c10e21ed2f4 /]# df -h
Filesystem                             Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:1-6851-xxx....  9.8G  311M  8.9G   4% /
tmpfs                                  2.0G     0  2.0G   0% /dev
shm                                    64M     0   64M   0% /dev/shm
/dev/mapper/centos-root                50G   30G   21G  59% /etc/hosts
tmpfs                                  2.0G     0  2.0G   0% /proc/kcore
tmpfs                                  2.0G     0  2.0G   0% /proc/timer_stats

10G割り当てられていたdocker-253:1-6851-xxxx…は1つのコンテナのディスクの上限値ということですね。なお、シンプロビジョニングのため物理的に10G割り当てられているわけではないため、10個以上コンテナを作成しても問題ありません。

##まとめ

dataloop0dm-x/dev/mapper/docker-253:1-6851-xxx....コンテナの/領域です

125
120
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
125
120

Delete article

Deleted articles cannot be recovered.

Draft of this article would be also deleted.

Are you sure you want to delete this article?