DevOps系列文章之 Docker 安装 NFS 服务器

Docker 安装 NFS 服务器

环境:

192.186.2.105 NFS 服务器

192.168.2.106 Client 客户端

安装

一、服务器端

https://github.com/f-u-z-z-l-e/docker-nfs-server

1、创建目录

复制代码
mkdir /nfsdata
mkdir -p /docker/nfs/

2、启动脚本

复制代码
vim start.sh

# 内容
docker run -d --privileged --restart=always \
-v /nfsdata:/nfs \
-e NFS_EXPORT_DIR_1=/nfs \
-e NFS_EXPORT_DOMAIN_1=\* \
-e NFS_EXPORT_OPTIONS_1=rw,insecure,no_subtree_check,no_root_squash,fsid=1 \
-p 111:111 -p 111:111/udp \
-p 2049:2049 -p 2049:2049/udp \
-p 32765:32765 -p 32765:32765/udp \
-p 32766:32766 -p 32766:32766/udp \
-p 32767:32767 -p 32767:32767/udp \
fuzzle/docker-nfs-server:latest

二、安装 客户端

1、安装

复制代码
yum -y install nfs-utils

2、查看

showmount -e 192.168.59.139

复制代码
成功显示

Export list for 192.168.59.139:
/nfs *

如图所示可以看到NFS服务器内的共享文件夹为nfs(因为我们的nfs服务端部署为docker部署,此/nfs的路径为docker容器内部,我们已经映射出来为/nfsdata):

3、挂载

复制代码
mkdir -p /mnt/nfsdata

mount -t nfs 192.168.59.139:/nfs /mnt/nfsdata

4、创建一个文件

复制代码
echo "hello,world" > hello.html

三、查看 NFS 服务器

1、成功显示 hello.html 文件

复制代码
ll /nfsdata

总用量 4
-rw-r--r-- 1 root root 12 3月  19 07:31 hello.html

Docker挂载使用

复制代码
version: '3'
services:
  xbd-mysql:
    image: mysql:8.0.19
    restart: always
    container_name: xbd-mysql
    volumes:
      - nfs:/var/lib/mysql
    ports:
      - 3306:3306
    environment:
      MYSQL_ROOT_PASSWORD: root
    privileged: true
    command: ['--lower_case_table_names=1', '--character-set-server=utf8', '--collation-server=utf8_general_ci']

volumes:
  nfs:
    driver_opts:
      type: "nfs"
      o: "addr=192.168.59.139,nolock,soft,rw"
      device: ":/nfs/mysql"

也可以通过docker的方式创建volume

复制代码
docker volume create nfs_name -d local -o type=nfs -o o=addr=192.168.59.139,nolock,soft,rw -o device=:/nfs/mysql

这样就可以在服务端也创建容器进行挂载,这样就能实现跨主机容器与容器之间的文件共享。

需求:任意修改客户端容器内共享目录的内容,在服务器的的宿主机或者容器内也能看到实时的修改

技术:NFS、Dockers

原理:先利用NFS创建服务端与客户端之间的共享空间,再利用docker技术将客户端容器的某个目录挂载到共享目录,就能实现需求。同理,采用上述方法也能实现跨主机的容器之间文件的共享。

服务端NFS配置

复制代码
vim /etc/exports
/mnt/nfs_file/ 192.168.57.0/24(rw,sync,no_root_squash)

//ro只读权限
//rw读写权限
//sync同步写入内存与磁盘当中
//no_all_squash保留共享文件的UID和GID(默认)
//no_root_squash使得root用户具有根目录的完全访问权限
.0/24(rw,sync,no_root_squash)

//ro只读权限
//rw读写权限
//sync同步写入内存与磁盘当中
//no_all_squash保留共享文件的UID和GID(默认)
//no_root_squash使得root用户具有根目录的完全访问权限
相关推荐
虎王物联1 小时前
Docker Compose编排物联网平台后端:Nginx+PHP-FPM+EMQX+InfluxDB一键部署实战
物联网·nginx·docker
Zadig2 小时前
企业 Agent 总烂在 Demo 里?Zadig 工作流 AI 任务给了一条路
后端·devops
fb_123452 小时前
Linux三剑客超全精讲(grep+sed+awk)零基础入门|正则+实战面试题
linux·运维·服务器
晓晓_za8986683 小时前
Geo 优化服务 CI/CD 流水线搭建:源码自动构建、测试与灰度发布
运维·服务器·tcp/ip·spring·缓存·ci/cd
潘正翔3 小时前
k8s高级_调度器Deployment
linux·运维·云原生·容器·kubernetes·jenkins·devops
风流 少年3 小时前
hutool
java·服务器·开发语言
H_oRIZoN_3 小时前
Linux入门DAY27(文件IO(系统调用)详解|open/read/write/lseek)
java·linux·服务器
勇往直前plus4 小时前
Docker PostgreSQL 16 部署要点(Ubuntu 22)
ubuntu·docker·postgresql
Lyy4 小时前
DevOps平台 — 第六篇:成员管理与工作台
devops
一个处女座的程序猿4 小时前
Computer之Server:caddy(可扩展的服务器平台)的简介、安装和使用方法、案例应用之详细攻略
运维·服务器·server·caddy