让Docker用上NFS


发布于

|

分类

,

这样就能充分利用Nas的「存储」功能啦!

背景

想把一些比较偏重「计算」的Docker从NAS上挪走。但是其他设备要么是用的存储卡,要么只有128G的硬盘,但是NAS有大概7T的空间可用。

那么,能不能有个啥办法,让「计算」跑在其他设备上,「存储」放在NAS上?

好的,可以,NFS可以。

实现

实现分两步:在NAS上开NFS存储;在其他设备上配置NFS挂载卷。都不难。

在NAS上开NFS存储

威联通上,找到「控制台-权限-共享文件夹」,找到一个共享文件夹(或者为NFS创建一个共享文件夹也成),点击「编辑共享文件夹权限」,将「选择权限类别」改成「NFS主机访问」,将下面的「访问权限」打开。

注意,这里有个「共享文件夹名称」,一般情况下和你的共享文件夹的名称(?)是相同的。记下来,后面有用。

在其他Docker上挂载NFS卷

以HomeAssistant为例吧:

version: '3'
services:
  homeassistant:
    image: "homeassistant/home-assistant"
    volumes:
      - nfs_homeassistant:/config
      - /etc/localtime:/etc/localtime:ro
    restart: always
volumes:
    nfs_homeassistant:
        driver_opts:
            type: "nfs"
            o: "addr=NAS的IP地址,rw,noatime,rsize=8192,wsize=8192,tcp,timeo=14,nfsvers=4"
            device: ":/共享文件夹名称/你随意创建文件夹"

注意几个点:

  1. 我给这个卷起名叫「nfs_homeassistant」,你可以随意起名
  2. o 那一大堆东西是从Portainer里面抄来的。最主要的是NAS的地址
  3. device ,前面的「共享文件夹名称」是必须的;如果你想将整个共享文件夹全挂载给这个Docker,那么只写到「共享文件夹名称」那里就好了,但是我不建议这样做,如果有多个Docker的话会乱掉。所以我这里在共享文件夹里面建立了新文件夹,然后只将这个新文件夹挂载给这个Docker

然后,回到NAS上,去共享文件夹下面创建 docker-compose.yaml 里面声明的文件夹。挂载「本地目录」路径不同,这里这一步必须手动完成,而不是会自动给你创建好。

最后,用你熟悉的 docker compose up -d 将Docker启起来。大功告成。

回NAS里面,你会发现已经有文件了。

有啥好处呢

额,唯一的好处是能充分利用NAS的存储吧。另外就是,万一你心血来潮想把Docker从一台机器迁移到另一台机器,不用再手工挪volume里面的文件。

其他没啥了,祝玩得愉快。


评论

发表回复

您的邮箱地址不会被公开。 必填项已用 * 标注