LoginSignup
118
91

More than 5 years have passed since last update.

3分くらいで分かるdockerのdata volume

Last updated at Posted at 2016-10-14

参考: https://docs.docker.com/engine/tutorials/dockervolumes/

docker create, runでの-vオプション指定時

$ docker create -v /usr/src/app --name ${container_name} busybox

などど実行した際に、-vオプションで指定したパスへのdata volumeが暗黙的に作成される。

data volumeを明示的に作成

$ docker volume create --name hoge_volume

この時、data volumeに使用するdriver pluginがインストール済みであればそれを指定することができ、NFS等を利用したdata volumeの作成も可能になる。(ただしdriverがその環境でinstallできるかは別なので注意)
SEE: https://docs.docker.com/engine/extend/legacy_plugins/#/volume-plugins

data volumeの確認

docker volume lsで一覧

コンテナを指定して使用しているdata volumeを調べたい場合は以下のようにすれば、volumeの名前を取得できる。

$ docker inspect -f  "{{range .Mounts}}{{.Name}}{{end}}" ${container_name}
a0a725e99b55e150ecedafc2f2bcc51f4780d728695a2d5b20d70647eabea74e

data volumeの削除

docker rm ${container_name}の際に-vオプションを付けない場合、data volumeは削除されない。
つまり、存在が残るので、docker create等の際に-v ${data_volume_name}:/usr/src/appなどと指定すれば再度マウントすることも可能。
data volume自体を指定して削除する場合はdocker volume rm ${data_volume_name}とする。

docker composeで使う

docker-compose.ymlをversion 2形式にした場合、volumesというkey以下に、data volumeを定義することができる。
これを利用して、永続化したdata volumeを各サービスにマウントすることができる。

version: '2'
volumes:
    app:
        driver: 'local'
    mysql:
        driver: 'local'
services:
    mysql:
        # 中略
        volumes:
            # ${volumesに定義したkey}:{マウントパス}
            - mysql:/var/lib/mysql
    app:
        # 中略
        volumes:
            - app:/usr/src/app/

上記でcreateを実行した際に、以下のようなdata volume群が作成される。

$ docker volume ls
local               ${compose_name}_app
local               ${compose_name}_mysql

また、この場合もdata volumeは暗黙的に削除されることはなく、docker-compose down -v, docker-compose rm -vなど-vオプションを指定することによって削除される。


data volumeを使えば永続化するためのdata containerは不必要。
ただし、data containerを使用すればdata volumeをまとめておいて、あとで一括で削除、というのもできる(っていうニーズがあるか…?)ので、状況によっては作る必要性はありそう。

118
91
2

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
118
91