
一个轻量级、高度可定制的容器化NFS服务器多架构镜像
!NFS
这是一个非官方的多架构NFS服务器Docker镜像,专为多平台支持而创建。该镜像可创建本地NFS服务器,以促进客户端数据传输。官方网站:<[***]>
!Docker Pulls!Docker Stars
| 架构 | 是否可用 | 标签格式 | 状态 |
|---|---|---|---|
| x86-64 | ✅ | amd64-<版本标签> | 已测试“可用” |
| arm64 | ✅ | arm64v8-<版本标签> | 已测试“可用” |
| armhf | ✅ | arm32v7-<版本标签> | 已测试“可用” |
| 标签 | 是否可用 | 描述 |
|---|---|---|
| latest | ✅ | 稳定的NFS发行版 |
| 4.2 | ✅ | 静态NFS构建版本4.2 |
以下是帮助您开始创建容器的示例代码片段。
yaml--- version: "3.9" services: nfs-server: image: mekayelanik/nfs-server-alpine:latest container_name: nfs-server-1 environment: - TZ=Asia/Dhaka # 时区 - ALLOWED_CLIENT=192.168.1.1/24 # 允许访问的客户端IP段 - NFS_MOUNT_PORT=2049 # NFS挂载端口 # 不包含根目录的共享数量 - NUMBER_OF_SHARES=2 - NFS_EXPORT_1=Movies # 第一个共享目录 - NFS_EXPORT_2=Music # 第二个共享目录 privileged: true # 特权模式,NFS运行必需 volumes: # 不要修改以下映射(/lib/modules),这是NFS容器运行的必需配置('sys_module' modprobe) - /lib/modules:/lib/modules # 容器内的NFS根目录'/data'必须映射到主机(服务器)上的有效目录 # 不能为子共享使用不同的父目录(例如/mnt/drive2/Movies) # 若要共享其他父目录下的子共享,必须部署新的容器(这是NFS的工作机制) # 要创建多个NFS服务器容器,请使用下方的MACVLAN示例 - /mnt/drive1:/data # 主机目录映射到容器内/data - /mnt/drive1/Movies:/data/Movies # 电影共享目录映射 - /mnt/drive1/Music:/data/Music # 音乐共享目录映射 ports: - 2049:2049 # NFS端口 - 111:111 # RPC端口 - 32765-32767:32765-32767 # 其他所需端口 # 不要修改以下配置,这是NFS容器运行的必需权限(cap_add) cap_add: - SYS_ADMIN - SETPCAP - ALL restart: unless-stopped # 除非手动停止,否则总是重启
bashdocker run -d \ --name=nfs-server-alpine \ -e TZ=Asia/Dhaka \ # 时区 -e NFS_MOUNT_PORT=2049 \ # NFS挂载端口 -e NUMBER_OF_SHARES=2 \ # 共享数量 -e NFS_EXPORT_1=Movies \ # 第一个共享目录 -e NFS_EXPORT_2=Music \ # 第二个共享目录 -e ALLOWED_CLIENT=192.168.1.1/24 \ # 允许访问的客户端IP段 -v /lib/modules:/lib/modules \ # 内核模块映射(必需) -v /mnt/drive1:/data \ # 根目录映射 -v /mnt/drive1/Movies:/data/Movies \ # 电影共享目录 -v /mnt/drive1/Music:/data/Music \ # 音乐共享目录 --privileged \ # 特权模式 --restart unless-stopped \ # 重启策略 mekayelanik/nfs-server-alpine:latest
首先创建MACVLAN网络,示例如下
bashdocker network create -d macvlan \ --subnet=192.168.0.0/16 \ # 设置子网,删除此注释 --ip-range=192.168.1.0/16 \ # 设置此MACVLAN的IP范围(容器IP将从此范围分配),删除此注释 --gateway=192.168.0.1 \ # 设置网络网关或路由器本地IP,删除此注释 -o parent=eth0 macvlan-docker # parent=网络接口(树莓派通常为'eth0',现代x86系统可能为'enp4s0',通过'tcpdump --list-interfaces'查看),末尾为MACVLAN网络名称(此处为macvlan-docker)
在MACVLAN上创建容器,示例如下
yaml--- version: "3.9" services: nfs-server: image: mekayelanik/nfs-server-alpine:latest container_name: nfs-server-1 environment: - TZ=Asia/Dhaka - ALLOWED_CLIENT=192.168.1.1/24 - NFS_MOUNT_PORT=2049 # 不包含根目录的共享数量 - NUMBER_OF_SHARES=2 - NFS_EXPORT_1=Movies - NFS_EXPORT_2=Music privileged: true volumes: # 不要修改以下映射(/lib/modules),这是NFS容器运行的必需配置('sys_module' modprobe) - /lib/modules:/lib/modules # 容器内的NFS根目录'/data'必须映射到主机(服务器)上的有效目录 # 不能为子共享使用不同的父目录(例如/mnt/drive2/Movies) # 若要共享其他父目录下的子共享,必须部署新的容器(这是NFS的工作机制) # 要创建多个NFS服务器容器,请使用下方的MACVLAN示例 - /mnt/drive1:/data - /mnt/drive1/Movies:/data/Movies - /mnt/drive1/Music:/data/Music ports: - 2049:2049 - 111:111 - 32765-32767:32765-32767 # 不要修改以下配置,这是NFS容器运行的必需权限(cap_add) cap_add: - SYS_ADMIN - SETPCAP - ALL restart: unless-stopped hostname: nfs-server-1 # 主机名 domainname: local # 域名 mac_address: 14-24-34-44-54-64 # MAC地址 networks: macvlan-docker: ipv4_address: 192.168.1.21 # 分配的静态IP # 网络定义 networks: macvlan-docker: name: macvlan-docker # 引用创建的MACVLAN网络 external: True # 外部网络
yaml--- version: "3.9" services: ########### 父目录/磁盘1共享容器 ########### nfs-server-disk1: image: mekayelanik/nfs-server-alpine:latest container_name: nfs-server-disk1 environment: - TZ=Asia/Dhaka - ALLOWED_CLIENT=192.168.1.1/24 - NFS_MOUNT_PORT=2049 # 不包含根目录的共享数量 - NUMBER_OF_SHARES=2 - NFS_EXPORT_1=Movies - NFS_EXPORT_2=Music privileged: true volumes: ### 不要修改以下映射(/lib/modules),这是NFS容器运行的必需配置('sys_module' modprobe)### - /lib/modules:/lib/modules # 容器内的NFS根目录'/data'必须映射到主机(服务器)上的有效目录 # 不能为子共享使用不同的父目录(例如/mnt/drive2/Movies) # 若要共享其他父目录下的子共享,必须部署新的容器(这是NFS的工作机制) # 要创建多个NFS服务器容器,请使用下方的MACVLAN示例 - /mnt/drive1:/data - /mnt/drive1/Movies:/data/Movies - /mnt/drive1/Music:/data/Music ports: - 2049:2049 - 111:111 - 32765-32767:32765-32767 ### 不要修改以下配置,这是NFS容器运行的必需权限(cap_add)### cap_add: - SYS_ADMIN - SETPCAP - ALL restart: unless-stopped hostname: nfs-server-1 domainname: local mac_address: ab-cd-ef-ab-cd-a1 networks: macvlan-docker: ipv4_address: 192.168.249.101 # 磁盘1的NFS服务器IP ########### 父目录/磁盘2共享容器 ########### nfs-server-disk2: image: mekayelanik/nfs-server-alpine:latest container_name: nfs-server-disk2 environment: - TZ=Asia/Dhaka - ALLOWED_CLIENT=192.168.1.1/24 - NFS_MOUNT_PORT=2049 # 不包含根目录的共享数量 - NUMBER_OF_SHARES=2 - NFS_EXPORT_1=Games - NFS_EXPORT_2=Softwares privileged: true volumes: # 不要修改以下映射(/lib/modules),这是NFS容器运行的必需配置('sys_module' modprobe) - /lib/modules:/lib/modules # 容器内的NFS根目录'/data'必须映射到主机(服务器)上的有效目录 # 不能为子共享使用不同的父目录(例如/mnt/drive2/Movies) # 若要共享其他父目录下的子共享,必须部署新的容器(这是NFS的工作机制) # 要创建多个NFS服务器容器,请使用下方的MACVLAN示例 - /mnt/drive2:/data - /mnt/drive2/Games:/data/Games - /mnt/drive2/Softwares:/data/Softwares ports: - 2049:2049 - 111:111 - 32765-32767:32765-32767 # 不要修改以下配置,这是NFS容器运行的必需权限(cap_add) cap_add: - SYS_ADMIN - SETPCAP - ALL restart: unless-stopped hostname: nfs-server-disk2 domainname: local mac_address: ab-cd-ef-ab-cd-a2 networks: macvlan-docker: ipv4_address: 192.168.249.102 # 磁盘2的NFS服务器IP # 网络定义 networks: macvlan-docker: name: macvlan-docker external: True
在客户端机器上执行以下命令挂载NFS共享:
bash# 挂载根目录 sudo mount -v -o vers=4.2,loud HOST-IP:/ /mount/path/to/ROOT-MOUNT-DIR 示例:sudo mount -v -o vers=4.2,loud 192.168.1.2:/ /mount/path/to/ROOT-MOUNT-DIR # 挂载子共享(命令行方式) sudo mount -v -o vers=4.2,loud HOST-IP:/Movies /nfs_shares/Movies sudo mount -v -o vers=4.2,loud HOST-IP:/Music /nfs_shares/Music 示例: mkdir -p /nfs_shares/Movies && \ sudo mount -v -o vers=4.2,loud 192.168.1.2:/Movies /nfs_shares/Movies
在/etc/fstab中添加以下内容:
bash##### NFS共享挂载 ##### 192.168.249.101:/ /nfs_shares nfs nofail,noauto,x-systemd.automount 192.168.249.101:/Movies /nfs_shares/Movies nfs nofail,noauto,x-systemd.automount 192.168.249.101:/Music /nfs_shares/Music nfs nofail,noauto,x-systemd.automount
bashsudo umount /nfs_shares/Movies
以下是更新容器的说明:
docker compose pull
docker compose pull mekayelanik/nfs-server-alpinedocker compose up -d
docker compose up -d nfs-server-alpinedocker image prunedocker pull mekayelanik/nfs-server-alpine:latestdocker stop nfs-server-alpinedocker rm nfs-server-alpinedocker image prunebashdocker run --rm \ -v /var/run/docker.sock:/var/run/docker.sock \ containrrr/watchtower\ --run-once nfs-server-alpine
docker image prune注意:可以使用Watchtower实现Docker容器的自动更新,但不建议使用自动更新。不过,对于忘记原始参数的容器,这是一个有用的一次性手动更新工具。长期来看,建议使用[Docker Compose]([***]
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 Docker 登录认证访问私有仓库
无需登录使用专属域名
Kubernetes 集群配置 Containerd
K3s 轻量级 Kubernetes 镜像加速
VS Code Dev Containers 配置
Podman 容器引擎配置
HPC 科学计算容器配置
ghcr、Quay、nvcr 等镜像仓库
Harbor Proxy Repository 对接专属域名
Portainer Registries 加速拉取
Nexus3 Docker Proxy 内网缓存
需要其他帮助?请查看我们的 常见问题Docker 镜像访问常见问题解答 或 提交工单
docker search 限制
站内搜不到镜像
离线 save/load
插件要用 plugin install
WSL 拉取慢
安全与 digest
新手拉取配置
镜像合规机制
manifest unknown
no matching manifest(架构)
invalid tar header(解压)
TLS 证书失败
DNS 超时
域名连通性排查
410 Gone 排查
402 与流量用尽
401 认证失败
429 限流
D-Bus 凭证提示
413 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务