SLES 15
Sponsored Link

Docker : 永続ストレージを利用する2019/01/22

 
コンテナーが破棄されると当然コンテナー内部のデータも消失するため、コンテナーで作成したデータを永続化するには、外部ストレージを利用する必要があります。
[1] 例として、データ保管専用のコンテナーを作成して、そこへデータを保管します。
コンテナーは必要最小限の OS 機能を備えた busybox イメージでデータ保管用コンテナーを作成します。
dlp:~ #
vi Dockerfile
# 新規作成

FROM busybox
MAINTAINER ServerWorld <admin@srv.world>

VOLUME /storage
CMD /bin/sh

# イメージのビルド

dlp:~ #
docker build -t storage .
dlp:~ #
docker images

REPOSITORY               TAG                 IMAGE ID            CREATED             SIZE
storage                  latest              7d75db1a210e        7 seconds ago       1.2MB
web_server               latest              3fc464a24f9a        8 minutes ago       549MB
srv.world/fedora_httpd   latest              5b6251fe21ea        15 minutes ago      499MB
fedora                   latest              26ffec5b4a8a        5 days ago          274MB
busybox                  latest              3a093384ac30        3 weeks ago         1.2MB

# 任意の名前を付けてコンテナー生成

dlp:~ #
docker run -it --name storage_server storage

/ #
exit
[2] 任意のコンテナーからデータ保管用コンテナーを利用するには、[--volumes-from] を指定します。
dlp:~ #
docker run -it --name fedora_server --volumes-from storage_server fedora /bin/bash
[root@a764aeaafc44 /]#
df -hT

Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/vda2      btrfs   40G  3.6G   37G  10% /
tmpfs          tmpfs   64M     0   64M   0% /dev
tmpfs          tmpfs  8.7G     0  8.7G   0% /sys/fs/cgroup
/dev/vda2      btrfs   40G  3.6G   37G  10% /storage
shm            tmpfs   64M     0   64M   0% /dev/shm
tmpfs          tmpfs  8.7G   40K  8.7G   1% /run/secrets/SUSEConnect
tmpfs          tmpfs  8.7G     0  8.7G   0% /proc/acpi
tmpfs          tmpfs  8.7G     0  8.7G   0% /proc/scsi
tmpfs          tmpfs  8.7G     0  8.7G   0% /sys/firmware

[root@a764aeaafc44 /]#
echo "persistent storage" >> /storage/testfile.txt

[root@a764aeaafc44 /]#
ls -l /storage

total 4
-rw-r--r-- 1 root root 19 Jan 22 02:16 testfile.txt
[3] データ保管用コンテナーを起動すると、データが保管されていることが確認できます。
dlp:~ #
docker start storage_server

dlp:~ #
docker exec -it storage_server cat /storage/testfile.txt

persistent storage
[4] データ保管用コンテナーを利用する方法以外にも、ホスト側の任意のディレクトリをコンテナーにマウントして利用することも可能です。
# データ保管用ディレクトリ作成

dlp:~ #
mkdir -p /var/lib/docker/disk01

dlp:~ #
echo "persistent storage" >> /var/lib/docker/disk01/testfile.txt
# 作成したディレクトリをコンテナーの /mnt にマウントして起動

dlp:~ #
docker run -it -v /var/lib/docker/disk01:/mnt fedora /bin/bash
[root@94da11638237 /]#
df -hT

Filesystem     Type   Size  Used Avail Use% Mounted on
/dev/vda2      btrfs   40G  3.6G   37G  10% /
tmpfs          tmpfs   64M     0   64M   0% /dev
tmpfs          tmpfs  8.7G     0  8.7G   0% /sys/fs/cgroup
/dev/vda2      btrfs   40G  3.6G   37G  10% /mnt
shm            tmpfs   64M     0   64M   0% /dev/shm
tmpfs          tmpfs  8.7G   40K  8.7G   1% /run/secrets/SUSEConnect
tmpfs          tmpfs  8.7G     0  8.7G   0% /proc/acpi
tmpfs          tmpfs  8.7G     0  8.7G   0% /proc/scsi
tmpfs          tmpfs  8.7G     0  8.7G   0% /sys/firmware

[root@94da11638237 /]#
cat /mnt/testfile.txt

persistent storage
関連コンテンツ