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 |