困った
Macでの開発環境に、Docker Toolboxを利用してる。
DBとかも構築できるけど、そのままだとコンテナを削除してしまうとデータまで消えてしまう。
そんなときは、volumeオプションを利用すればいい。
volumeオプションは、「左にホストOSのパス:右にコンテナのパス」形式で指定できる。
とは言っても。
Mac(Windows)環境でのDockerは、VirtualBox上で稼働している。
終了後次回起動時には、コンテナの如くきれいさっぱりデータが消えてる。
で。
この左のパス欄に任意につけたvolume名を指定すると、ホストOSの特定ディレクトリに生成される。
/var/lib/docker/volumes/ にvolume用ディレクトリが作成されて、VirtualBox上で起動しているホストOSを終了させていても次回起動時に残っている。
対応策
例えば、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