「docker-compose」で任意のvolumeを作成・マウントする方法

Dockerコンテナ作成時にvolumeを永続化したい、また任意のボリュームを作成する方法を前回まとめました。

今回は、「docker-compose」を利用してボリュームを作成、マウントするコードをまとめました。

作成環境は「CentOS8」となります。

「docker-compose」のvolume作成方法

Dockerのvolumesはあくまで共有になります。

以下では「postgreSQL」コンテナ上で、ホストディレクトリ直下の「db-data」ディレクトリと、「postgresSQL」コンテナ側の「/var/lib/postgresql/data」にマウントします。

これを「docker-compose」で実施します。

$ cat docker-compose.yml
version: '3'
 
services:
  db:
    image: postgres
    ports:
            - "5432:5432"
    environment:
            POSTGRES_PASSWORD: postgres
    volumes:
            - ./db-data:/var/lib/postgresql/data
  web:
    build: .
    command: python manage.py runserver 0.0.0.0:8000
    volumes:
      - .:/code
    ports:
      - "8000:8000"
    depends_on:
      - db
volumes:
    db-data:        
$ 

「docker-compose」でコンテナ作成

上記で、「docker-compose」を作成したら、プロジェクトを作成します。

$ docker-compose run web django-admin startproject composeexample .

正常に作成されると以下で「db-data」のボリュームが作成されていることが確認できます。

$ ll
total 44
-rw-r--r--  1 root             root  174 Apr 22 19:53 Dockerfile
drwxr-xr-x  3 root             root 4096 Apr 23 13:58 composeexample
drwx------ 19 systemd-coredump root 4096 Apr 26 12:10 db-data
-rw-r--r--  1 root             root  393 Apr 26 12:09 docker-compose.yml
-rwxr-xr-x  1 root             root  634 Apr 23 13:53 manage.py
-rw-r--r--  1 root             root   25 Apr 12 16:59 requirements.txt
$ 

「db-data」内のデータがpostgresqlのデータが共有されていることが確認できます。

$ ll db-data/
total 124
-rw------- 1 systemd-coredump input     3 Apr 26 12:04 PG_VERSION
drwx------ 5 systemd-coredump input  4096 Apr 26 12:04 base
drwx------ 2 systemd-coredump input  4096 Apr 26 12:10 global
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_commit_ts
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_dynshmem
-rw------- 1 systemd-coredump input  4535 Apr 26 12:04 pg_hba.conf
-rw------- 1 systemd-coredump input  1636 Apr 26 12:04 pg_ident.conf
drwx------ 4 systemd-coredump input  4096 Apr 26 12:15 pg_logical
drwx------ 4 systemd-coredump input  4096 Apr 26 12:04 pg_multixact
drwx------ 2 systemd-coredump input  4096 Apr 26 12:10 pg_notify
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_replslot
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_serial
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_snapshots
drwx------ 2 systemd-coredump input  4096 Apr 26 12:10 pg_stat
drwx------ 2 systemd-coredump input  4096 Apr 26 12:17 pg_stat_tmp
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_subtrans
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_tblspc
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_twophase
drwx------ 3 systemd-coredump input  4096 Apr 26 12:04 pg_wal
drwx------ 2 systemd-coredump input  4096 Apr 26 12:04 pg_xact
-rw------- 1 systemd-coredump input    88 Apr 26 12:04 postgresql.auto.conf
-rw------- 1 systemd-coredump input 26588 Apr 26 12:04 postgresql.conf
-rw------- 1 systemd-coredump input    36 Apr 26 12:10 postmaster.opts
-rw------- 1 systemd-coredump input    94 Apr 26 12:10 postmaster.pid
$ 

以下で、「docker-compose」を起動します。

$ docker-compose up

dockerのボリュームに任意のボリュームが作成されたことが確認できます。

$ docker volume ls
DRIVER              VOLUME NAME
local               django_db-data

Dockerで任意のボリュームを作成・マウントする手順は以上となります。




エンジニアのオンライン学習

ITエンジニアにおすすめの教材、オンラインスクールです。
無料からエンジニアの学習ができる教材などまとめているので参考にしてください。

おすすめオンライン教材
自宅で学習ができるオンラインスクール

ITエンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。



コメントを残す

メールアドレスが公開されることはありません。 が付いている欄は必須項目です

日本語が含まれない投稿は無視されますのでご注意ください。(スパム対策)

ABOUT US
げんき☆ひろき
インターネット関連のSEをやっています。 ネットワーク、サーバー、ストレージ、仮想基盤まで幅広く手を出しており、MVNOの構築経験もあります。 現在は、Pythonを使ったプログラミングの開発をしネットワークの自動化ツールを作成しています! Pythonの入門書も作成しているので、ぜひ参考にしてください!