CentOS 7
 

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

FROM busybox
MAINTAINER ServerWorld <admin@srv.world>

VOLUME /storage
CMD /bin/sh

# イメージのビルド

[root@dlp ~]#
docker build -t storage .
[root@dlp ~]#
docker images

REPOSITORY          TAG                 IMAGE ID            CREATED             VIRTUAL SIZE
storage             latest              65c5cce81114        20 seconds ago      1.113 MB
docker.io/centos    latest              14dab3d40372        6 days ago          194.7 MB
docker.io/busybox   latest              fc0db02f3072        13 days ago         1.113 MB

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

[root@dlp ~]#
docker run -i -t --name storage_server storage

/ #
exit
[2] 任意のコンテナーからデータ保管用コンテナーを利用するには、以下のように「--volumes-from」を指定します。
[root@dlp ~]#
docker run -i -t --name centos_server --volumes-from storage_server centos /bin/bash
[root@b9b7a2d35b51 /]#
df -hT

Filesystem                              Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:0-67164897-..... ext4    99G  266M   94G   1% /
tmpfs                                   tmpfs  2.0G     0  2.0G   0% /dev
shm                                     tmpfs   64M     0   64M   0% /dev/shm
tmpfs                                   tmpfs  2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root                 xfs     27G  3.2G   24G  13% /storage
tmpfs                                   tmpfs  2.0G     0  2.0G   0% /run/secrets

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

[root@b9b7a2d35b51 /]#
ll /storage

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

[root@dlp ~]#
docker attach storage_server

/ #
cat /storage/testfile.txt

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

[root@www ~]#
mkdir -p /var/docker/disk01

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

[root@www ~]#
docker run -i -t -v /var/docker/disk01:/mnt centos /bin/bash
[root@bc9a4d5578a6 /]#
df -hT

Filesystem                              Type   Size  Used Avail Use% Mounted on
/dev/mapper/docker-253:0-67164897-..... ext4    99G  266M   94G   1% /
tmpfs                                   tmpfs  2.0G     0  2.0G   0% /dev
shm                                     tmpfs   64M     0   64M   0% /dev/shm
tmpfs                                   tmpfs  2.0G     0  2.0G   0% /sys/fs/cgroup
/dev/mapper/centos-root                 xfs     27G  3.2G   24G  13% /mnt
tmpfs                                   tmpfs  2.0G     0  2.0G   0% /run/secrets

[root@bc9a4d5578a6 /]#
cat /mnt/testfile.txt

persistent storage
 
Tweet