docker NFS共享目录实现
服务端配置
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29
| #安装 rpcbind 和 nfs-utils yum install nfs-utils rpcbind #Ubuntu中 # 服务端 apt install nfs-kernel-server # 客户端 apt install nfs-common #在服务端创建一个共享目录 /home/shared ,作为客户端挂载的远端入口,然后设置权限。 mkdir -p /home/shared chmod 777 /home/shared #修改 NFS 配置文件 vi /etc/exports /home/shared *(rw,sync,insecure,no_subtree_check,no_root_squash) # 启动rpc服务 service rpcbind start # 启动 NFS 服务 service nfs-server start #查看是否正确加载了设置的 /etc/exports 配置 showmount -e localhost # 端口配置或关闭防火墙systemctl stop firewalld # nfs启动时会随机启动多个端口并向RPC注册,配置NFS固定端口 vi /etc/sysconfig/nfs RQUOTAD_PORT=30001 LOCKD_TCPPORT=30002 LOCKD_UDPPORT=30002 MOUNTD_PORT=30003 STATD_PORT=30004 # 端口开放 TCP&UDP 111,2049,30001-30004
|
/home/shared 文件目录设置为 *
即允许所有客户端挂载,可以设置 IP 区间,例如:/home 10.222.77.0/24(ro,sync,insecure,no_root_squash)
设置该ip区间的客户端挂载只读挂载。
NFS 配置文件参数参考
参数 |
说明 |
ro |
只读访问 |
rw |
读写访问 |
sync |
所有数据在请求时写入共享 |
async |
nfs 在写入数据前可以响应请求 |
secure |
nfs 通过 1024 以下的安全 TCP/IP 端口发送 |
insecure |
nfs 通过 1024 以上的端口发送 |
wdelay |
如果多个用户要写入 nfs 目录,则归组写入(默认) |
no_wdelay |
如果多个用户要写入 nfs 目录,则立即写入,当使用 async 时,无需此设置 |
hide |
在 nfs 共享目录中不共享其子目录 |
no_hide |
共享 nfs 目录的子目录 |
subtree_check |
如果共享 /usr/bin 之类的子目录时,强制 nfs 检查父目录的权限(默认) |
no_subtree_check |
不检查父目录权限 |
all_squash |
共享文件的 UID 和 GID 映射匿名用户 anonymous,适合公用目录 |
no_all_squash |
保留共享文件的 UID 和 GID(默认) |
root_squash |
root 用户的所有请求映射成如 anonymous 用户一样的权限(默认) |
no_root_squash |
root 用户具有根目录的完全管理访问权限 |
anonuid=xxx |
指定 nfs 服务器 /etc/passwd 文件中匿名用户的 UID |
anongid=xxx |
指定 nfs 服务器 /etc/passwd 文件中匿名用户的 GID |
客户端配置
1 2 3 4 5 6 7 8 9 10
| # 客户端 # 客户端查看共享目录 showmount -e ip # 客户端挂载点 mkdir -p /home/shared chmod 777 /home/shared # 挂载 sudo mount -t nfs 192.168.13.129:/home/shared /home/shared # 卸载 umount /home/shared
|
挂载到docker
1
| docker run -d --privileged=true --name jenkins -p 8080:8080 -p 50000:50000 -v /home/shared:/home/shared -v ~/docker/jenkins:/var/jenkins_home jenkins/jenkins
|