Docker-composeが使用するボリュームを追跡するために、名前付きボリュームを使用するのが好きです。これは、次のような「通常の」ボリュームに最適です。
version: 2
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
volumes:
named_vol:
しかし、ローカルホストをマウントするときに機能させる方法はわかりません。私は次のようなものを探しています:
version: 2
services:
example-app:
volume:
-named_homedir:/dir/in/container/volume
volumes:
named_homedir: /c/Users/
または
version: 2
services:
example-app:
volume:
-/c/Users/:/home/dir/in/container/ --name named_homedir
これは何らかの方法で可能ですか、またはマウントされたボリュームの匿名ボリュームに固執していますか?
このGitHubの問題を読むとわかるように、名前付きボリュームのマウント今は重要です …1.11または1.12以降)。 ドライバー固有のオプション が文書化されています。 GitHubスレッドからのメモ:
docker volume create --opt type=none --opt device=<Host path> --opt o=bind
ホストパスが存在しない場合、作成されません。
オプションは、文字通りマウントsyscallに渡されます。 nfsの例[上記参照]のように、特定の「タイプ」には使いにくいため、特殊なケースを追加することがあります。
– @ cpuguy83
作成でそれを使用する方法に関する特定の質問に対処するには、volumes
セクションの下に書き込みます。
my-named-volume:
driver_opts:
type: none
device: /home/full/path #NOTE needs full path (~ doesn't work)
o: bind
これは、リンクされたgithubスレッドでcpuguy83が記述したように、オプションが(内部で)mount
コマンドに直接渡されるためです。
EDIT:コメント通り…
${PWD}
を相対パスに使用できます。…@ mikeyjk、既存のボリュームを削除する必要がある場合があります。
docker volume rm $(docker volume ls)
ホストボリュームは、名前付きボリュームまたは匿名ボリュームとは異なります。それらの「名前」は、ホスト上のパスです。
ホストボリュームにvolumes
セクションを使用する方法はありません。
私は最近、同じ質問への答えを探していて、このプラグインにつまずきました: https://github.com/CWSpear/local-persist 始めたトピックが何をしたいのかを可能にするようです。
まだ自分で試したことはありませんが、誰かに役立つかもしれないと思いました。
私は(ほぼ)同じことを試してきましたが、次のようなもので動作するようです:
version: '2'
services:
example-app:
volume:
-named_vol:/dir/in/container/volume
-/c/Users/:/dir/in/container/volume
volumes:
named_vol:
私のために働くようです(私はそれを掘り下げたのではなく、ただテストしました)。
OPはすでにフルパスを使用しているように見えますが、ほとんどの人のように、コンテナ内にプロジェクトフォルダをマウントすることに関心がある場合は、これが役立つかもしれません。
@kaiserが言って@linuxbanditが例示したように、これはdriver_opts
でそれを行う方法です。ただし、通常使用可能な環境変数$ PWDを使用して、docker-composeコンテキストでディレクトリのフルパスを指定しないようにすることができます。
logs-directory:
driver_opts:
type: none
device: ${PWD}/logs
o: bind