Docker上的ZFS存储

Vic*_*Vic 6 zfs docker ubuntu-16.04

我想在Ubuntu(16.04)docker容器上试用ZFS.按照以下https://docs.docker.com/engine/userguide/storagedriver/zfs-driver/

> lsmod | grep zfs
zfs                  2813952  5
zunicode              331776  1 zfs
zcommon                57344  1 zfs
znvpair                90112  2 zfs,zcommon
spl                   102400  3 zfs,zcommon,znvpair
zavl                   16384  1 zfs
Run Code Online (Sandbox Code Playgroud)

列出ZFS安装

>sudo zfs list
NAME                  USED  AVAIL  REFER  MOUNTPOINT
zpool-docker          261K   976M  53.5K  /zpool-docker
zpool-docker/docker   120K   976M   120K  /var/lib/docker
Run Code Online (Sandbox Code Playgroud)

启动docker后

> sudo docker info
Containers: 0
 Running: 0
 Paused: 0
 Stopped: 0
Images: 0
Server Version: 1.12.0
Storage Driver: aufs
 Root Dir: /var/lib/docker/aufs
 Backing Filesystem: zfs
 Dirs: 0
 ...
Run Code Online (Sandbox Code Playgroud)

不知道为什么我仍然得到**存储驱动程序:aufs和Root目录:/ var/lib/docker/aufs"代替zfs?

另外我如何将"/ zpool-docker"映射到Ubuntu容器映像中?

Lau*_*lin 8

假设你有:

  • 一个ZFS池(我们称之为data)
  • 安装的ZFS数据集/var/lib/docker(使用以下命令创建的命令zfs create -o mountpoint=/var/lib/docker data/docker)

然后:

停止你的docker守护进程(例如systemctl stop docker.service)

创建一个文件/etc/docker/daemon.json或修改它以包含一个"storage-driver"设置为的行zfs:

{
...
        "storage-driver": "zfs"
...
}
Run Code Online (Sandbox Code Playgroud)

重新启动docker守护程序.

docker info 现在应该透露:

Storage Driver: zfs
Zpool: data
Zpool Health: ONLINE
Parent Dataset: data/docker
Run Code Online (Sandbox Code Playgroud)