私を混乱させる何かがあり、私にとっては公式文書ではあまり明確ではありませんでした。
私の知る限り、永続ボリュームは3つで作成できます。 方法。
- コンテナの呼び出し時 フルパスを含む(
-v ~/database:/data
):ホストの外部フォルダーをDockerコンテナー内で使用できるようにします。どちらも変更できます。 - コンテナの呼び出し時 ボリューム名を使用する(
-v datamysql:/data
):永続的なボリュームをコンテナ内で使用できるようにします。存在しなかった場合に作成されます。docker volume ls
を使用して名前で一覧表示できます 。内部的には、/var/lib/docker/volumes/ae4445f7c9317a22fe84726fb894c47754f38a7fd150c00fd877024889968750/_data
などの場所に保存されます。 。 - コンテナのビルド時 (
VOLUME ["/database/data"]
Dockerfileで)。docker run
を呼び出すたびに コンテナを削除しても存続する新しいボリュームを作成します。後続の呼び出しは異なる結果になるため、これは混乱を招く可能性があります。 再利用されない作成中のボリューム。
名前付き(2番目のケース)と名前なし(3番目のケース)の両方のボリュームを
で一覧表示できます。$ docker volume ls
DRIVER VOLUME NAME
local 064593b3e65977097d4d0c8402a6c633f1af69be2937bf118678ab8f97ee9a7e
local 4753ad0437d13e54c76d9c34a30a1843396a1866a0cf9237d500fdcca0d78c5f
local 8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415
local db48eefe8f189b36107ca9c4eebb792690590ab0ba055e7e4e2c9adfd1765b7e
local datamysql
docker inspect mycontainer
を使用すると、コンテナのボリュームの正確な場所を確認できます。
{
"Type": "volume",
"Name": "8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415",
"Source": "/media/USBdrive/docker/volumes/8d7a35354f666b2e8a26866a35bbae36bb9601701d4c6b505ab8ce6629f69415/_data",
"Destination": "/var/lib/mysql",
"Driver": "local",
"Mode": "",
"RW": true,
"Propagation": ""
},
未使用のボリュームを削除すると便利な場合があります(特に3番目の場合)。
$ docker volume prune
WARNING! This will remove all volumes not used by at least one container.
Are you sure you want to continue? [y/N] y
Deleted Volumes:
4753ad0437d13e54c76d9c34a30a1843396a1866a0cf9237d500fdcca0d78c5f
Total reclaimed space: 205MB
VOLUME
を使用したため Dockerfileのディレクティブ、3番目のケースです。コンテナを調べてファイルを探し、繰り返しセッションでデータを保持する場合は、コマンドラインからボリュームを指定します。