# Intro 本文介绍如何把 NAS 主机目录挂载到 Linux 主机,并通过 Volume 挂载到 Docker 容器,借助 NAS 的阵列盘实现高可靠数据存储。 - NAS:"/vol1/workspace" - Linux:"/mnt/nas/vol1/workspace" - Docker:"/workspace" 假设 NAS 的用户名密码是"admin/123456",IP为"192.168.1.100",目录映射目标:"/vol1/workspace" -> "/mnt/nas/vol1/workspace" -> "/workspace"。 ## 基于 NFS 协议挂载 1. 在 Linux 安装相关工具 Debian/Ubuntu: ```bash sudo apt update && sudo apt install nfs-common -y ``` CentOS/RHEL: ```bash sudo yum install nfs-utils ``` 2. 创建目录 NAS: ```bash sudo /vol1/workspace ``` Linux: ```bash sudo mkdir -p /mnt/nas/vol1/workspace ``` 3. 授权(UID=1000,GID=1000) NAS: ```bash sudo chown -R 1000:1000 /vol1/workspace ``` Linux: ```bash sudo chown -R 1000:1000 /mnt/nas/vol1/workspace ``` 4. 在 Linux 执行挂载 ```bash sudo mount -t nfs -o rw,vers=4.2,noatime,rsize=1048576,wsize=1048576,timeo=1200,retrans=2,_netdev 192.168.1.100:/vol1/workspace /mnt/nas/vol1/workspace ``` | 参数名称 | 说明 | | --- | --- | | rw | 拥有读写权限 | | vers | 使用 nfs 4.2 版本 | | noatime | 不更新文件的访问时间戳,能显著减少磁盘 I/O 和网络开销,提升性能 | | rsize/wsize | 读写块大小,1MB 是 NFS v4.2 推荐的尺寸,适合高速内网传输文件,有效利用网络带宽 | | timeo | 客户端等待重传前的超时时间,给网络波动留的容忍度,单位是厘秒,1200=120秒 | | retrans | 连接彻底失败之前,仅重传 2 次。配合长超时,客户端会很有耐心地等待,不会因短暂网络抖动而频繁报错| | _netdev | 告诉系统等网络可用后再挂载,防止在启动初期,网络未就绪时挂载失败 | 5. 在 Linux 设置开机自动挂载(可选但强烈推荐) ```bash sudo nano /etc/fstab ``` 在文件末尾追加一行: ```text 192.168.1.100:/vol1/workspace /mnt/nas/vol1/workspace nfs rw,vers=4.2,noatime,rsize=1048576,wsize=1048576,timeo=1200,retrans=2,_netdev 0 0 ``` 6. 在 Linux 运行 Docker 容器并挂载 ```bash docker run -v /mnt/nas/vol1/workspace:/workspace --user 1000:1000 <镜像名> ```