
nfs-server-alpine是一个轻量级NFS服务器镜像,基于Alpine Linux构建,仅支持NFS v4协议,通过TCP端口2049提供服务。该镜像移除了Confd依赖,进一步减小体积并提升设备兼容性,适用于需要简单高效文件共享的场景。
注意:版本3及更早存在严重缺陷,建议使用版本4及以上。
bashdocker run -d --name nfs --privileged \ -v /本地目录:/nfsshare \ -e SHARED_DIRECTORY=/nfsshare \ itsthenetwork/nfs-server-alpine:latest
如需外部访问,添加端口映射或使用主机网络:
bash# 端口映射 docker run -d --name nfs --privileged -p 2049:2049 \ -v /本地目录:/nfsshare \ -e SHARED_DIRECTORY=/nfsshare \ itsthenetwork/nfs-server-alpine:latest # 主机网络 docker run -d --name nfs --privileged --net=host \ -v /本地目录:/nfsshare \ -e SHARED_DIRECTORY=/nfsshare \ itsthenetwork/nfs-server-alpine:latest
| 环境变量 | 描述 | 默认值 |
|---|---|---|
SHARED_DIRECTORY | 指定要共享的目录路径(必须与挂载卷路径一致) | 无(必填) |
READ_ONLY | 设置共享为只读模式 | 未设置(默认为读写模式) |
SYNC | 启用同步写入模式 | 未设置(默认为异步模式) |
PERMITTED | 限制允许访问的客户端IP范围(如"10.11.99.*") | *(允许所有客户端) |
示例:只读共享
bashdocker run -d --name nfs --privileged -p 2049:2049 \ -v /本地目录:/nfsshare \ -e SHARED_DIRECTORY=/nfsshare \ -e READ_ONLY=true \ itsthenetwork/nfs-server-alpine:latest
示例:限制客户端IP
bashdocker run -d --name nfs --privileged -p 2049:2049 \ -v /本地目录:/nfsshare \ -e SHARED_DIRECTORY=/nfsshare \ -e PERMITTED="192.168.1.*" \ itsthenetwork/nfs-server-alpine:latest
基本挂载
bashsudo mount -v 服务器IP:/ /本地挂载点
显式指定NFS版本
bashsudo mount -v -o vers=4,loud 服务器IP:/ /本地挂载点
卸载共享
bashsudo umount /本地挂载点
NFS服务需要特定系统权限,推荐使用--privileged模式运行。也可尝试使用能力集替代:
bashdocker run -d --name nfs \ --cap-add SYS_ADMIN --cap-add SETPCAP --security-opt=no-new-privileges \ -v /本地目录:/nfsshare \ -e SHARED_DIRECTORY=/nfsshare \ itsthenetwork/nfs-server-alpine:latest
使用特权模式
yamlspec: containers: - name: nfs-server image: itsthenetwork/nfs-server-alpine:latest securityContext: privileged: true volumeMounts: - name: nfs-data mountPath: /nfsshare env: - name: SHARED_DIRECTORY value: /nfsshare volumes: - name: nfs-data hostPath: path: /本地目录
使用能力集
yamlspec: containers: - name: nfs-server image: itsthenetwork/nfs-server-alpine:latest securityContext: capabilities: add: ["SYS_ADMIN", "SETPCAP"] volumeMounts: - name: nfs-data mountPath: /nfsshare env: - name: SHARED_DIRECTORY value: /nfsshare volumes: - name: nfs-data hostPath: path: /本地目录
yamlversion: '3' services: nfs-server: image: itsthenetwork/nfs-server-alpine:latest privileged: true # 或使用cap_add # cap_add: # - SYS_ADMIN # - SETPCAP ports: - "2049:2049" volumes: - /本地目录:/nfsshare environment: - SHARED_DIRECTORY=/nfsshare # - READ_ONLY=true # - PERMITTED=192.168.1.*
NFSv4要求额外共享目录必须是根共享目录的子目录。配置方法:
SHARED_DIRECTORY_2、SHARED_DIRECTORY_3等指定额外共享目录示例
bashdocker run -d --name nfs --privileged -p 2049:2049 \ -v /本地目录1:/nfsshare \ -v /本地目录2:/nfsshare/another \ -e SHARED_DIRECTORY=/nfsshare \ -e SHARED_DIRECTORY_2=/nfsshare/another \ itsthenetwork/nfs-server-alpine:latest
客户端挂载多共享
bash# 挂载根共享 sudo mount -v 服务器IP:/ /挂载点1 # 挂载子共享 sudo mount -v 服务器IP:/another /挂载点2
需启用内核头文件服务:
bashsudo ros service enable kernel-headers sudo ros service up kernel-headers
或在cloud-config.yml中配置:
yaml#cloud-config rancher: services_include: kernel-headers: true
OverlayFS不支持NFS导出,建议将卷挂载到以下支持的文件系统目录:
/home、/media、/mnt(ext4文件系统)确保加载NFS内核模块:
bashmodprobe nfs nfsd
成功启动的日志输出:
Writing SHARED_DIRECTORY to /etc/exports file The PERMITTED environment variable is unset or null, defaulting to '*'. This means any client can mount. The READ_ONLY environment variable is unset or null, defaulting to 'rw'. Clients have read/write access. The SYNC environment variable is unset or null, defaulting to 'async' mode. Writes will not be immediately written to disk. Displaying /etc/exports contents: /nfsshare *(rw,fsid=0,async,no_subtree_check,no_auth_nlm,insecure,no_root_squash) Starting rpcbind... Displaying rpcbind status... program version netid address service owner 100000 4 tcp6 ::.0.111 - superuser 100000 3 tcp6 ::.0.111 - superuser 100000 4 udp6 ::.0.111 - superuser 100000 3 udp6 ::.0.111 - superuser 100000 4 tcp 0.0.0.0.0.111 - superuser 100000 3 tcp 0.0.0.0.0.111 - superuser 100000 2 tcp 0.0.0.0.0.111 - superuser 100000 4 udp 0.0.0.0.0.111 - superuser 100000 3 udp 0.0.0.0.0.111 - superuser 100000 2 udp 0.0.0.0.0.111 - superuser 100000 4 local /var/run/rpcbind.sock - superuser 100000 3 local /var/run/rpcbind.sock - superuser Starting NFS in the background... rpc.nfsd: knfsd is currently down rpc.nfsd: Writing version string to kernel: -2 -3 +4 rpc.nfsd: Created AF_INET TCP socket. rpc.nfsd: Created AF_INET6 TCP socket. Exporting File System... exporting *:/nfsshare /nfsshare <world> Starting Mountd in the background... Startup successful.
dockerfileFROM alpine:latest LABEL maintainer "Steven Iveson <***>" LABEL source "https://github.com/sjiveson/nfs-server-alpine" LABEL branch "master" COPY Dockerfile README.md / RUN apk add --no-cache --update --verbose nfs-utils bash iproute2 && \ rm -rf /var/cache/apk /tmp /sbin/halt /sbin/poweroff /sbin/reboot && \ mkdir -p /var/lib/nfs/rpc_pipefs /var/lib/nfs/v4recovery && \ echo "rpc_pipefs /var/lib/nfs/rpc_pipefs rpc_pipefs defaults 0 0" >> /etc/fstab && \ echo "nfsd /proc/fs/nfsd nfsd defaults 0 0" >> /etc/fstab COPY exports /etc/ COPY nfsd.sh /usr/bin/nfsd.sh COPY .bashrc /root/.bashrc RUN chmod +x /usr/bin/nfsd.sh ENTRYPOINT ["/usr/bin/nfsd.sh"]
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。





探索更多轩辕镜像的使用方法,找到最适合您系统的配置方式
通过 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 与超大单层
来自真实用户的反馈,见证轩辕镜像的优质服务