Ubuntu 20.04
Sponsored Link

Docker : 永続ストレージを利用する
2020/06/02
 
コンテナーが破棄されると当然コンテナー内部のデータも消失するため、コンテナーで作成したデータを永続化するには、外部ストレージを利用する必要があります。
[1] 例として、データ保管専用のコンテナーを作成して、そこへデータを保管します。
コンテナーは必要最小限の 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             SIZE
storage                  latest              4b03c60b9191        1 second ago        1.22MB
nginx_server             latest              2d5672bca343        9 minutes ago       155MB
srv.world/ubuntu_nginx   latest              d30733d4f315        2 hours ago         155MB
busybox                  latest              78096d0a5478        2 weeks ago         1.22MB
ubuntu                   latest              1d622ef86b13        5 weeks ago         73.9MB

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

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

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

Filesystem                        Type     Size  Used Avail Use% Mounted on
overlay                           overlay   77G  3.2G   71G   5% /
tmpfs                             tmpfs     64M     0   64M   0% /dev
tmpfs                             tmpfs    5.9G     0  5.9G   0% /sys/fs/cgroup
shm                               tmpfs     64M     0   64M   0% /dev/shm
/dev/mapper/ubuntu--vg-ubuntu--lv ext4      77G  3.2G   71G   5% /storage
tmpfs                             tmpfs    5.9G     0  5.9G   0% /proc/acpi
tmpfs                             tmpfs    5.9G     0  5.9G   0% /proc/scsi
tmpfs                             tmpfs    5.9G     0  5.9G   0% /sys/firmware

root@58f8259662f7:/#
echo "persistent storage" >> /storage/testfile.txt

root@58f8259662f7:/#
ls -l /storage

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

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

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

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

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

root@dlp:~#
docker run -it -v /var/lib/docker/disk01:/mnt ubuntu /bin/bash
root@dafa8f40e41a:/#
df -hT

Filesystem                        Type     Size  Used Avail Use% Mounted on
overlay                           overlay   77G  3.2G   71G   5% /
tmpfs                             tmpfs     64M     0   64M   0% /dev
tmpfs                             tmpfs    5.9G     0  5.9G   0% /sys/fs/cgroup
shm                               tmpfs     64M     0   64M   0% /dev/shm
/dev/mapper/ubuntu--vg-ubuntu--lv ext4      77G  3.2G   71G   5% /mnt
tmpfs                             tmpfs    5.9G     0  5.9G   0% /proc/acpi
tmpfs                             tmpfs    5.9G     0  5.9G   0% /proc/scsi
tmpfs                             tmpfs    5.9G     0  5.9G   0% /sys/firmware

root@dafa8f40e41a:/#
cat /mnt/testfile.txt

persistent storage
関連コンテンツ