#author("2018-08-30T18:38:27+09:00","","") #author("2018-08-30T18:38:41+09:00","","") [[CentOS7]] Docker : 永続ストレージを利用する *Docker : 永続ストレージを利用する [#e1f2c998] コンテナーが破棄されると当然コンテナー内部のデータも消失するため、コンテナーで作成したデータを永続化するには、外部ストレージを利用する必要があります。 Docker 公式で推奨されているのは、データ保管専用のコンテナーを作成して、そこへデータを保管する方法です。 例として、必要最小限の OS 機能を備えた busybox イメージでデータ保管用コンテナーを作成します。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# vi Dockerfile| |&color(lightpink){# 新規作成}; &br; FROM busybox &br; MAINTAINER HogeCOM <admin@hoge.com> &br; &br; VOLUME /storage &br; CMD /bin/sh &br; &br; &color(lightpink){# イメージのビルド};| |[root@localhost ~]# docker build -t storage .| |[root@localhost ~]# docker images| |REPOSITORY TAG IMAGE ID CREATED VIRTUAL SIZE &br; storage latest 65c5cce81114 20 seconds ago 1.113 MB &br; docker.io/centos latest 14dab3d40372 6 days ago 194.7 MB &br; docker.io/busybox latest fc0db02f3072 13 days ago 1.113 MB| |&color(lightpink){# 任意の名前を付けてコンテナー生成};| |[root@localhost ~]# docker run -i -t --name storage_server storage| |/ # exit| 任意のコンテナーからデータ保管用コンテナーを利用するには、以下のように「--volumes-from」を指定します。 |BGCOLOR(black):COLOR(white):|c |[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 &br; /dev/mapper/docker-253:0-67164897-..... ext4 99G 266M 94G 1% / &br; tmpfs tmpfs 2.0G 0 2.0G 0% /dev &br; shm tmpfs 64M 0 64M 0% /dev/shm &br; tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup &br; /dev/mapper/centos-root xfs 27G 3.2G 24G 13% /storage &br; tmpfs tmpfs 2.0G 0 2.0G 0% /run/secrets| |[root@b9b7a2d35b51 /]# echo "persistent storage" >> /storage/testfile.txt| |[root@b9b7a2d35b51 /]# ll /storage| |total 4 &br; -rw-r--r-- 1 root root 19 Dec 22 02:15 testfile.txt| データ保管用コンテナーを起動すると、データが保管されていることを確認できます。 |BGCOLOR(black):COLOR(white):|c |[root@localhost ~]# docker start storage_server| |[root@localhost ~]# docker attach storage_server| |/ # cat /storage/testfile.txt &br; persistent storage| データ保管用コンテナーを利用する方法以外にも、ホスト側の任意のディレクトリをコンテナーにマウントして利用することも可能です。 |BGCOLOR(black):COLOR(white):|c |&color(lightpink){# データ保管用ディレクトリ作成};| |[root@localhost ~]# mkdir -p /var/docker/disk01| |[root@localhost ~]# echo "persistent storage" >> /var/docker/disk01/testfile.txt| |&color(lightpink){# 作成したディレクトリをコンテナーの /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 &br; /dev/mapper/docker-253:0-67164897-..... ext4 99G 266M 94G 1% / &br; tmpfs tmpfs 2.0G 0 2.0G 0% /dev &br; shm tmpfs 64M 0 64M 0% /dev/shm &br; tmpfs tmpfs 2.0G 0 2.0G 0% /sys/fs/cgroup &br; /dev/mapper/centos-root xfs 27G 3.2G 24G 13% /mnt &br; tmpfs tmpfs 2.0G 0 2.0G 0% /run/secrets| |[root@bc9a4d5578a6 /]# cat /mnt/testfile.txt| |persistent storage|