Files
container/nas-to-nfs-linux-docker.md
2026-07-29 14:49:52 +08:00

87 lines
2.2 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# 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=1000GID=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 <镜像名>
```