CentOS7

Docker : 永続ストレージを利用する

コンテナーが破棄されると当然コンテナー内部のデータも消失するため、コンテナーで作成したデータを永続化するには、外部ストレージを利用する必要があります。

Docker 公式で推奨されているのは、データ保管専用のコンテナーを作成して、そこへデータを保管する方法です。

例として、必要最小限の OS 機能を備えた busybox イメージでデータ保管用コンテナーを作成します。

[root@localhost ~]# vi Dockerfile
# 新規作成
FROM busybox
MAINTAINER HogeCOM <admin@hoge.com>

VOLUME /storage
CMD /bin/sh

# イメージのビルド
[root@localhost ~]# docker build -t storage .
[root@localhost ~]# 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@localhost ~]# docker run -i -t --name storage_server storage
/ # exit

任意のコンテナーからデータ保管用コンテナーを利用するには、以下のように「--volumes-from」を指定します。

[root@localhost ~]# 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

データ保管用コンテナーを起動すると、データが保管されていることを確認できます。

[root@localhost ~]# docker start storage_server
[root@localhost ~]# docker attach storage_server
/ # cat /storage/testfile.txt
persistent storage

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

# データ保管用ディレクトリ作成
[root@localhost ~]# mkdir -p /var/docker/disk01
[root@localhost ~]# echo "persistent storage" >> /var/docker/disk01/testfile.txt
# 作成したディレクトリをコンテナーの /mnt にマウントして起動
[root@localhost ~]# 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

トップ   新規 一覧 検索 最終更新   ヘルプ   最終更新のRSS