Come installare il plugin del volume di btrfs docker?

Quando il command di esecuzione:

docker run -it -v some_volume:/abc/xyz --volume-driver=btrfs a_docker_image /bin/bash 

mostra i terminali:

 docker: Error response from daemon: create some_volume: Error looking up volume plugin btrfs: plugin not found. 

====================

Ma se crea prima il volume:

 docker volume create --opt type=btrfs --name some_volume 

Creerà il volume con successo. Ora, se cerco di eseguire il contenitore e di creare un nuovo volume:

 docker run -it -v some_volume:/abc/xyz --volume-driver=btrfs a_docker_image /bin/bash 

Mostra (ovviamente ha senso, poiché lo stesso volume di nome è già stato creato):

 docker: Error response from daemon: create some_volume: conflict: volume name must be unique. 

E se cerco di eseguire il contenitore con il volume esistente:

 docker run -it -v some_volume:/abc/xyz a_docker_image /bin/bash 

Ritorna:

 docker: Error response from daemon: missing device in volume options. 

====================

Qualcuno può aiutarmi a dirmi come installare il plugin di volume btrfs per il docker? Non ho trovato alcuna informazione utile riguardo a questo, tranne qualche introduzione sul plugin (ma non su come installare). Grazie in anticipo.

Come suggerito da @forevergenin nei commenti, ecco il mio ambiente docker:

docker version

 Client: Version: 1.11.0 API version: 1.23 Go version: go1.5.4 Git commit: 4dc5990 Built: Wed Apr 13 18:13:28 2016 OS/Arch: darwin/amd64 Server: Version: 1.11.0 API version: 1.23 Go version: go1.5.4 Git commit: 4dc5990 Built: Wed Apr 13 19:36:04 2016 OS/Arch: linux/amd64 

docker info

 Containers: 0 Running: 0 Paused: 0 Stopped: 0 Images: 39 Server Version: 1.11.0 Storage Driver: aufs Root Dir: /mnt/sda1/var/lib/docker/aufs Backing Filesystem: extfs Dirs: 121 Dirperm1 Supported: true Logging Driver: json-file Cgroup Driver: cgroupfs Plugins: Volume: local Network: null host bridge Kernel Version: 4.1.19-boot2docker Operating System: Boot2Docker 1.11.0 (TCL 7.0); HEAD : 32ee7e9 - Wed Apr 13 20:06:49 UTC 2016 OSType: linux Architecture: x86_64 CPUs: 1 Total Memory: 996.1 MiB Name: default ID: 74TB:OVH5:S3GD:UQUG:ILWG:5NVH:2MSH:5H7R:A5H4:GSLV:2Q6D:ZIR6 Docker Root Dir: /mnt/sda1/var/lib/docker Debug mode (client): false Debug mode (server): true File Descriptors: 15 Goroutines: 32 System Time: 2016-08-15T13:57:03.866016657Z EventsListeners: 0 Username: thyrlian Registry: https://index.docker.io/v1/ Labels: provider=virtualbox 

Sono nuovo a btrfs con docker, ma qui è la mia comprensione:

Utilizzando btrfs come driver di archiviazione significa che il docker utilizzerà internamente le btrfs per le immagini e i container (che viene spiegato qui ). In particolare, guardare i dettagli di installazione qui : ti fanno creare una partizione btrfs e montare /var/lib/docker su di esso. Quando si riavvia il demone docker dopo che, le docker info dovrebbero dirvi "Driver di archiviazione: btrfs".

Utilizzando il driver btrfs, la base dell'image viene salvata in int /var/lib/docker/btrfs/subvolumes e poi fanno gli snapshot (ma non sono sicuro where li /var/lib/docker/btrfs/subvolumes esattamente). Ma questo avviene automaticamente senza che tu specifichi il driver (immagino che specificare il driver è utile quando si dispone di più driver che possono essere eseguiti su un dato filesystem ma il driver btrfs sembra essere il default quando / var / lib / docker è formattato in btrfs.

Per quanto riguarda i volumi, credo che non siano salvati come sottofondi btrfs. Sembrano semplici cartelle in /var/lib/docker/volumes/ . Ancora una volta, posso immaginare che questo sia il comportmento normale del docker: le immagini ei contenitori sono stratificati, ma i volumi sono directory semplici.

Alless, questo è il comportmento che osservo:

  • Se tirò un'image o creo un contenitore, ottengo sottostrutture btrfs create.
  • Potrei creare un volume semplicemente usando il docker volume create testvol1 e montarlo in un contenitore. Ma allora non è un sottostrato di btrfs.

Se vuoi avere i tuoi volumi in sottostanti btrfs, credo che potrebbe essere necessario creare i sottolivelli manualmente e montare i volumi in essi direttamente.