Windows11 WSL2 Ubuntu 24.04 LTS Docker miniconda3

Docker volume

ここまで何とか Docker コンテナが動くようになりました。
引き続き Docker volume について考えて行きます。
コンテナを破棄すると出来上がったデータも破棄されてしまい再利用できません。
Docker はコンテナ外にデータ保存領域をつくる機能を提供しています。
volumes は Docker のコンテナ内で作成したデータを永続化するための場所です。
volumes に保存したデータはコンテナを破棄しても残り再利用できます。
d-minic コンテナでは Dockerfile の中に
VOLUME /app
を書いて対応しました。
しかし Dockerfile に書かなくても Docker volume を利用することができます。
Docker の Volume がよくわからないから調べた
が参考になります。

docker volume create

docker volume を作成します。
コンテナ外にデータ保存領域をつくります。
t-volume という保存領域を作ります。
名前は適当です。
どこに作成されるかと言うとホスト OS の中の
/var/lib/docker/volumes/t-volume/_data
にあります。
しかし、windows11 wls2 を使っている場合、 Docker 環境は HyperKit という VM(バーチャルマシン)上で実行されているため windows からは参照できないようです。
volume を createします。
yamada@yama:~$ docker volume create t-volume
作成された t-volume の詳細を見ます。
inspect コマンドで参照することができます。

yamada@yama:~$ docker volume inspect t-volume
[結果]
{
    "CreatedAt": "2025-10-06T20:40:16+09:00",
    "Driver": "local",
    "Labels": null,
    "Mountpoint": "/var/lib/docker/volumes/t-volume/_data",
    "Name": "t-volume",
    "Options": null,
    "Scope": "local"
}

Docker で volumes を設定する
が参考になります。

volume 指定で Docker 起動

作成した volume を指定してコンテナ(continuumio/miniconda3)を起動します。
-v [volume名]:[コンテナの volume 用ディレクトリ(volume_dir)→名前は適当]
のオプションで t-volume を指定します。
無事コンテナに入ることができたら ls -la で
コンテナ内に volume 用ディレクトリ volume_dir が存在するか確認します。

yamada@yama:~$ docker run -it --rm -v t-volume:/volume_dir continuumio/miniconda3
(base) root@a6428994173a:/# ls
bin   dev  home  lib64  mnt  proc  run   srv  tmp  var
boot  etc  lib   media  opt  root  sbin  sys  usr  volume_dir

volume_dir ディレクトリ内に test.txt を作成します。

(base) root@a6428994173a:/# cd volume_dir
(base) root@a6428994173a:/volume_dir# echo "test" > test.txt
(base) root@a6428994173a:/volume_dir# cat test.txt
test
(base) root@a6428994173a:/volume_dir# exit

exit でコンテナを破棄しました。
--rm オプション付きで起動しましたので、コンテナはきれいになくなりました。
よって
/volume_dir/test.txt
も同時に破棄されました。
でもホスト OS ubuntu の中の
/var/lib/docker/volumes/t-volume/_data
になかに test.txt は保存され残っています。

yamada@yama:~$ sudo cat /var/lib/docker/volumes/t-volume/_data/test.txt
[結果]
test

PC エクスプローラ

\\wsl.localhost\Ubuntu-24.04\var\lib\docker\volumes\t-volume\_data\test.txt

から見えるようにファイル権限を 777 に変更し、 誰でもファイルを読取り、実行、変更できるようにします。(chmod 777)

yamada@yama:~$ sudo chmod 777 /var/lib/docker/volumes/t-volume/_data/test.txt

この変更をしないと
\\wsl.localhost\Ubuntu-24.04\var\lib\docker
までしか見ることができません。
この先を見ようとすると

  • ネットワークエラー
  • が発生します。
    場合によっては、permission denied が発生しているファイル、フォルダのすべての権限を 書き換えないといけないケースもあります。
    例)
    yamada@yama:~$ sudo chmod 777 /var/lib/docker/
    yamada@yama:~$ sudo chmod 777 /var/lib/docker/volumes/
    根本的な解決案もあるようですが大変なようです。
    Docker コンテナで「Permission denied」エラーを解決する方法
    を見てください。

    docker volume 削除

    docker volume をいじっているとゴミがたまります。
    削除してみます。
    まずは、利用可能なボリュームを $ docker volume ls コマンドで確認します。


    yamada@yama:~$ docker volume ls
    DRIVER    VOLUME NAME
    local     2a6e94173e418003fba0b3a5633a4c4ef470bee107a1e2879512ed3064bdd11b   ①
    local     app
    local     name  ②
    local     t-volume
    --①を削除
    yamada@yama:~$ docker volume rm 2a6e94173e418003fba0b3a5633a4c4ef470bee107a1e2879512ed3064bdd11b
    [結果]
    2a6e94173e418003fba0b3a5633a4c4ef470bee107a1e2879512ed3064bdd11b
    --②を削除
    yamada@yama:~$ docker volume rm name
    [結果]
    name
    --利用可能なボリュームを再確認
    yamada@yama:~$ docker volume ls
    [結果]
    DRIVER    VOLUME NAME
    local     app
    local     t-volume
    ①②が削除されました。
    

    ここまでで volume 指定で Docker 起動し、ホストの root 内のフォルダと
    コンテナで作成したデータの共有ができるようにしました。
    今度は、ホスト OS のユーザ領域
    /home/yamada/****/
    とデータの共有ができるようにします。


  • Docker volume バインドマウント に進む
  • Docker イメージ d-minic コンテナを起動 に戻る
  • dockerfile で continuumio/miniconda3 コンテナを起動 に戻る
  • docker-miniconda3 コンテナの構築 に戻る
  • NVIDIA Container Toolkit インストール準備まとめ に戻る
  • Docker コンテナ miniconda3 に戻る
  • 70VPS に戻る