私は最近 (RedHat の担当者から) 「direct-LVM」(devicemapper) が運用セットアップに推奨されるストレージ バックエンドであると聞いたので、CentOS 7 VM でそれを試してみたいと思いました。( loopback-LVM がデフォルトのようです)。
そこで、データとメタデータ用に 2 つの LV を持つ個別のデータ ディスクと VG を作成し、それらを docker config に渡し、docker を起動しました。これまでのところ、次のようになっています。
# ps auxwf
...
/usr/bin/docker -d --selinux-enabled -H unix://var/run/docker.sock \
--log-level=warn --storage-opt dm.fs=xfs \
--storage-opt dm.datadev=/dev/vg_data/docker-data \
--storage-opt dm.metadatadev=/dev/vg_data/docker-meta \
--storage-opt dm.basesize=30G --bip=172.17.42.1/24 \
# docker info
Containers: 8
Images: 145
Storage Driver: devicemapper
Pool Name: docker-253:0-34485692-pool
Pool Blocksize: 65.54 kB
Backing Filesystem: xfs
Data file: /dev/vg_data/docker-data
Metadata file: /dev/vg_data/docker-meta
Data Space Used: 4.498 GB
Data Space Total: 34.36 GB
Data Space Available: 29.86 GB
Metadata Space Used: 6.402 MB
Metadata Space Total: 104.9 MB
Metadata Space Available: 98.46 MB
...
...
しかし、今日、ほとんどのローカルデータを生成するコンテナーを開始したとき (テストのためにそれを保持する必要がないため、起動時にそのボリュームをどこにもマップしていません)、ボリュームデータがすべてに配置されていることに気付きました/var/lib/docker/vfs
私が期待したように、LVMシンプールの代わりにディレクトリ。
これは、実際には、意図的に小さくしておいた root-fs をいっぱいにしています。
これは、Docker ホストから見たディスク レイアウトです。
# lsblk
NAME MAJ:MIN RM SIZE RO TYPE MOUNTPOINT
sda 8:0 0 10G 0 disk
+-sda1 8:1 0 500M 0 part /boot
+-sda2 8:2 0 9.5G 0 part
+-centos_system-root 253:0 0 8.5G 0 lvm /
+-centos_system-swap 253:1 0 1G 0 lvm [SWAP]
sdb 8:16 0 50G 0 disk
+-vg_data-docker--data 253:2 0 32G 0 lvm
| +-docker-253:0-34485692-pool 253:4 0 32G 0 dm
| +-docker-253:0-34485692-... 253:5 0 30G 0 dm
| +-docker-253:0-34485692-... 253:6 0 30G 0 dm
+-vg_data-docker--meta 253:3 0 100M 0 lvm
+-docker-253:0-34485692-pool 253:4 0 32G 0 dm
+-docker-253:0-34485692-... 253:5 0 30G 0 dm
+-docker-253:0-34485692-... 253:6 0 30G 0 dm
Docker にボリューム (暗黙的に作成されたもの、またはデータ コンテナーで明示的に作成されたもの) を構成済みの storage-backend に配置するにはどうすればよいですか?
それとも、これは本当に (ベース) イメージにのみ使用され、私の期待は完全に間違っていますか?