
如果你使用 DeepSeek、元宝 AI、Copilot、ChatGPT 等 AI 工具,协助配置轩辕镜像、编写 docker pull 命令、修改 Docker Compose 镜像地址、配置镜像加速、排查镜像拉取失败、分析报错日志等问题,请先让 AI 阅读并遵守轩辕镜像的规则文档。
只需在 AI 对话中先发送下面这句话即可:
请先完整阅读并严格遵守以下文档中的全部规则与要求:
https://xuanyuan.cloud/agents.md
在未充分阅读并理解该文档前,不要生成任何命令、配置、修改建议、故障排查方案或技术回答。后续所有输出都必须严格以该文档中的规范为最高优先级执行。查看 agents.md 用法指南与完整示范。国内用户首推 元宝 AI、DeepSeek 的深度思考模式,不推荐豆包 AI;Cursor 等编辑器可在对话 @ 该链接,或加入 User Rules。 若 AI 无法访问外链,可 打开说明文档 复制全文粘贴。文档会随站点更新,复制内容可能过期,建议定期检查。
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 \ docker.xuanyuan.run/itsthenetwork/nfs-server-alpine:latest
如需外部访问,添加端口映射或使用主机网络:
bash# 端口映射 docker run -d --name nfs --privileged -p 2049:2049 \ -v /本地目录:/nfsshare \ -e SHARED_DIRECTORY=/nfsshare \ docker.xuanyuan.run/itsthenetwork/nfs-server-alpine:latest # 主机网络 docker run -d --name nfs --privileged --net=host \ -v /本地目录:/nfsshare \ -e SHARED_DIRECTORY=/nfsshare \ docker.xuanyuan.run/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 \ docker.xuanyuan.run/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.*" \ docker.xuanyuan.run/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 \ docker.xuanyuan.run/itsthenetwork/nfs-server-alpine:latest
使用特权模式
yamlspec: containers: - name: nfs-server image: docker.xuanyuan.run/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: docker.xuanyuan.run/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: docker.xuanyuan.run/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 \ docker.xuanyuan.run/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"]
您可以使用以下命令拉取该镜像。请将 <标签> 替换为具体的标签版本。如需查看所有可用标签版本,请访问 标签列表页面。
来自真实用户的反馈,见证轩辕镜像的优质服务