Qiita Teams that are logged in
You are not logged in to any team

Log in to Qiita Team
Community
OrganizationAdvent CalendarQiitadon (β)
Service
Qiita JobsQiita ZineQiita Blog
Help us understand the problem. What is going on with this article?

DockerでDBを永続化すっぞ

More than 3 years have passed since last update.

困った

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

ll_kuma_ll
みんな大好きPHPerだ。 JavaScriptも扱ったりするよ。 でも、開発環境構築関連の話が多くてプログラミング系の話ができないでいる。
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