LoginSignup
40
46

More than 5 years have passed since last update.

DockerでDBを永続化すっぞ

Posted at

困った

Macでの開発環境に、Docker Toolboxを利用してる。
DBとかも構築できるけど、そのままだとコンテナを削除してしまうとデータまで消えてしまう。

そんなときは、volumeオプションを利用すればいい。
volumeオプションは、「左にホストOSのパス:右にコンテナのパス」形式で指定できる。
とは言っても。
Mac(Windows)環境でのDockerは、VirtualBox上で稼働している。
終了後次回起動時には、コンテナの如くきれいさっぱりデータが消えてる。

:weary:

で。
この左のパス欄に任意につけたvolume名を指定すると、ホストOSの特定ディレクトリに生成される。
/var/lib/docker/volumes/ にvolume用ディレクトリが作成されて、VirtualBox上で起動しているホストOSを終了させていても次回起動時に残っている。

:smiley:

対応策

例えば、your/postgresイメージからコンテナ起動時に指定したい場合。

起動コマンドで指定

volume名を「pgsql-data」としてvolumeオプションを指定。

$ docker run -itd --name postgres --volume pgsql-data:/var/lib/pgsql your/postgres

Docker Compose で指定

Docker Compose用にYAMLに記載するには。

docker-compose.yml
postgres:
  image: your/postgres
  volume:
    - pgsql-data:/var/lib/pgsql

Dockerコマンドでのvolume操作

生成されたvolumeを確認

$ docker volume ls

事前にvolumeを生成

$ docker volume create pgsql-data

生成したvolumeを削除

$ docker volume rm pgsql-data

40
46
0

Register as a new user and use Qiita more conveniently

  1. You get articles that match your needs
  2. You can efficiently read back useful information
  3. You can use dark theme
What you can do with signing up
40
46