82

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

これは何らかの方法で可能ですか、それともマウントされたボリュームの匿名ボリュームにこだわっていますか?

4

5 に答える 5

59

この GitHub の問題を読むとわかるように、名前付きボリュームのマウントが問題に なっています (1.11 または 1.12 以降)。ドライバー固有のオプションが文書化されています。GitHub スレッドからのメモ:

docker volume create --opt type=none --opt device=<host path> --opt o=bind

ホスト パスが存在しない場合は作成されません。

オプションは文字どおりマウント システムコールに渡されます。nfs の例 [上記参照] のように、使いにくいため、特定の「タイプ」に特別なケースを追加する場合があります。

– @ cpuguy83

構成でそれを使用する方法に関する特定の質問に対処するには、volumesセクションの下に次のように記述します。

my-named-volume:
     driver_opts:
           type: none
           device: /home/full/path #NOTE needs full path (~ doesn't work)
           o: bind

mountこれは、cpuguy83 がリンクされた github スレッドに書いたように、オプションが (フードの下で)コマンドに直接渡されるためです。

編集:コメントによると…</p>

  • ${PWD}…@villasv、相対パスに使用できます。

  • …@mikeyjk、既存のボリュームを削除する必要があるかもしれません:

     docker volume rm $(docker volume ls -q)
     OR
     docker volume prune
    
  • …@Camron Hudson さん、no such file or directoryエラーが表示される場合は、この SO の質問/回答をお読みください。Dockerはシンボリック リンクをたどらず、ローカル ファイル システムに権限の問題がある可能性があります。

于 2016-10-13T20:38:08.240 に答える