如何安装docker的btrfs卷插件?

当运行命令:

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

terminal显示:

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

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

但是,如果创build量第一:

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

它将成功创build卷。 现在,如果我尝试运行容器并创build一个新的卷:

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

它显示(当然这是有道理的,因为已经创build了同名的卷):

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

如果我尝试使用现有卷运行容器:

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

它返回:

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

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

任何人都可以帮助告诉我如何安装容器插件btrfs的docker? 我还没有find任何有用的信息,除了一些关于插件的介绍(但不是如何安装)。 提前致谢。

正如@forevergenin在评论中所build议的,这是我的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 

我是docker的btrfs新手,但是我的理解是:

使用btrfs作为存储驱动程序意味着docker将在内部为图像和容器使用btrfs(在此解释)。 具体来说,请看这里的安装细节:它们让你创build一个btrfs分区并在其上挂载/var/lib/docker 。 在此之后,当您重新启动docker守护程序时, docker info应告诉您“存储驱动程序:btrfs”。

使用btrfs驱动程序,图像的基础保存在int /var/lib/docker/btrfs/subvolumes ,然后他们做快照(但我不知道他们在哪里保存它们)。 但是,这是自动完成的,没有你指定的驱动程序(我猜想指定驱动程序是有用的,当你有多个驱动程序,可以运行在给定的文件系统,但是当/ var / lib / docker是btrfs驱动程序似乎是默认的格式化为btrfs。

关于卷,我相信它们不会被保存为btrfs子卷。 它们似乎是/var/lib/docker/volumes/简单文件夹。 再次,我可以想象这是docker的正常行为:图像和容器是分层的,但卷是简单的目录。

至less,这是我观察到的行为:

  • 如果我拉一个图像或创build一个容器,我得到btrfs子卷创build。
  • 我可以创build一个卷,只需使用docker volume create testvol1并将其挂载到一个容器中即可。 但是这不是一个btrfs子卷。

如果你想在btrfs子卷中创build卷,那么我相信你可能需要手动创build这个子卷,并直接将这些卷装入它们中。