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 pgdatapgdatapgdata という名前のボリュームを作ります。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 はログインすると無料で試せます(それより先はゴールド以上のプランで遊べます)。