docker volume の使い方

ボリュームを管理する

書き方

docker volume create 名前
docker volume ls
docker volume inspect 名前
docker volume rm 名前
docker volume prune

ボリュームはコンテナを消しても残るデータの置き場所です。docker run -v 名前:パス でコンテナにつなぎます。

よく使うオプション

オプション意味
create 名前ボリュームを作る
ls一覧を出す(-f dangling=true でどのコンテナも使っていないもの)
inspect 名前ホストのどこに置かれているか(Mountpoint)などを出す
rm 名前消す(使っているコンテナがあると消せない)
prune使っていないボリュームをまとめて消す(-a で名前付きも)

例

$ docker volume create pgdatapgdata

pgdata という名前のボリュームを作ります。docker run -v pgdata:/パス でつなぐと、コンテナを消してもデータが残ります。

$ docker volume lsDRIVER    VOLUME NAME
local     pgdata
local     9c1f0e2d3b4a5c6d7e8f9a0b1c2d3e4f5a6b7c8d9e0f1a2b3c4d5e6f7a8b9c0d

ボリュームの一覧を出します。名前が長い英数字のものは、名前を付けずに作られたボリュームです。

$ docker volume inspect pgdata[
    {
        "Driver": "local",
        "Mountpoint": "/var/lib/docker/volumes/pgdata/_data",
        "Name": "pgdata",
        "Scope": "local"
    }
]

ボリュームがホストのどこにあるかを出します。

$ docker run --rm -v pgdata:/data -v "$PWD":/backup alpine tar czf /backup/pgdata.tgz -C /data .

使い捨てのコンテナにボリュームと今のディレクトリをつなぎ、ボリュームの中身を tar で固めて取り出します。ボリュームのバックアップのよくある形です。

よくある間違い・注意

  • docker volume prune や、compose の down に -v を付けたものは、データベースのデータごと消します。打つ前に何が消えるか確かめます。
  • -v ./data:/data のように / や . で始めるとボリュームではなく、ホストのディレクトリをつなぐ形(バインドマウント)になります。

実際に打って練習する

Docker コースの Lv24「消えない積み荷 ボリューム」で覚えます(第3章 倉庫(データと設定))。ブラウザの中のシミュレーターで、本物と同じように打って確かめられます。

Lv1〜7 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。

Docker コマンド一覧(使い方と例)へ戻る