Dockerコンテナ作成時にvolumeを永続化したい、また任意のボリュームを作成する方法を前回まとめました。
					あわせて読みたい
					
			
						【Docker】コンテナのvolumeを作成・マウント指定する方法
						Dockerコンテナを作成する際に、書くコンテナではデータを保存するボリュームが作成されます。 以下ではコンテナのボリュームを表示するコマンド結果ですが、ボリューム...					
				今回は、「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エンジニアの開発・検証・学習としてインターネット上で専用のサーバ(VPS)を利用しましょう!
実務経験はVPSで学べます。
			

コメント