Help us understand the problem. What is going on with this article?

Docker for Windows で postgres コンテナの Volume マウントを安全にする

More than 1 year has passed since last update.

はじめに

Docker でコンテナを使ってDBを動かすとき、コンテナを落としてもデータが消えないよう、多くの人はDBのデータディレクトリをホスト側にマウントすると思います。

本記事は PostgreSQL についてですが、他DBでも同様だと思われます。

BAD: ホストOSのDirectoryをマウントする

一番Basicな方法だと思いますが、Windowsですと Permission denied だとか、書き込み時に initdb: could not fsync file Errorが頻発します。頑張ってLinuxの仮想FileSystemをWindows上で再現しているので折り合いが悪い様子。

### (a) コマンド直打ちの場合
$ docker run -d -v ./data:/var/lib/postgresql/data postgres:9.6.3-alpine
### (b) docker-compose.yml の場合
version: '2'
services:
  db:
    image: postgres:9.6.3-alpine
    volumes:
      - ./data:/var/lib/postgresql/data

Windows10 (Docker for Windows) の場合は↓も必要。

sharedrives.png

GOOD: Named Volume をマウントする

DockerNamed Volume にマウントする方法で安定しました。

### (a) コマンド直打ちの場合
$ docker volume create dbdata
dbdata

$ docker volume ls
DRIVER              VOLUME NAME
local               dbdata

$ docker run -d -v dbdata:/var/lib/postgresql/data postgres:9.6.3-alpine
### (b) docker-compose.yml の場合
version: '2'
services:
  db:
    image: postgres:9.6.3-alpine
    volumes:
      - dbdata:/var/lib/postgresql/data

volumes:
  dbdata:

データを消したい時はこうします。

$ docker volume ls
DRIVER              VOLUME NAME
local               dbdata
local               dockerpostgres_dbdata   # <-- docker-compose で作った方. 勝手にPrefixが付く

$ docker volume rm dbdata
dbdata

参考

今回も Stack Overflow 先生のおかげで助かりました。

Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした