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


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

【Docker】コンテナのvolumeを作成・マウント指定する方法

2020年4月19日

今回は、「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で任意のボリュームを作成・マウントする手順は以上となります。


Docker実践ガイド 第2版 impress top gearシリーズ

Docker実践ガイド 第2版 impress top gearシリーズ

古賀 政純
3,762円(10/19 14:23時点)
発売日: 2019/02/18
Amazonの情報を掲載しています

関連記事


コメントを残す

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

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

ABOUTこの記事をかいた人

blank

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