让 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 里面的文件。

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


已发布

分类

,

作者:

标签

评论

发表回复

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