首页 > 其他分享 >Docker容器基于NFS实现跨主机跨容器的文件共享

Docker容器基于NFS实现跨主机跨容器的文件共享

时间:2023-11-20 22:59:01浏览次数:22  
标签:容器 文件共享 share 192.168 nginx NFS 服务器 docker nfs


涉及两方面知识:1.NFS在CentOS如何搭建;2.在docker容器内如何有效挂载到远程的文件服务器。下面我们先完成第一个任务,构建NFS网络文件系统,实现两个服务器之间文件互联互通。
NFS
NFS(Network File System)即网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间共享资源。先构建两台独立的虚拟机,一台为docker服务器(192.168.31.230)它要链接到远程服务器地址为231的文件服务器上进行共享文件的获取,一台是文件服务器IP地址为(192.168.31.231)。下面先在231服务器构建完整的文件服务器(网络文件系统的基础设施)。
第一步:安装NFS所需的底层组件
yum install -y nfs-utils rpcbind
第一个nfs-utils 是nfs工具包,第二个rpcbind文件服务器服务端程序,两者缺一不可。
第二步:构建远程共享文件夹
mkdir /share cd /share/
第三步:构建一个核心的配置文件
cat >> /etc/exports <<- 'EOF' /share 192.168.31.0/24(rw,no_root_squash,sync) EOF
通过cat命令 向/etc/exports这个配置文件写入一行名为 /share 192.168.31.0/24(rw,no_root_squash,sync),其中/share 为我们新建的共享目录,192.168.31.0代表对31网段开放(rw,no_root_squash,sync)权限。
第四步:关闭防火墙(实际生产环境,酌情开放对外端口)
systemctl stop firewalld.service
第五步:启动nfs服务
systemctl start nfs.service
第六步:启动rpcbind服务
systemctl start rpcbind.service
第七步:将nfs设置为开机自动启动(锦上添花)
systemctl enable nfs.service
第八步:将rpcbind设置为自动启动(锦上添花)
systemctl enable rpcbind.service
到这里nfs在文件服务器的配置就完成了。输入命令:
exportfs
如果看到
/share 192.168.31.0/24
则代表我们的配置就成功了。

接下来我们在docker服务器(192.168.31.230)上做以下操作:
第一步:在docker服务器上安装nfs的客户端来进行远程通信。
yum install -y nfs-utils
第二步:验证一下上面的操作是否有效
showmount -e 192.168.31.231
查看231有那些挂载点对外暴露了。如果我们看到如下结果,说明可以正常访问了。

最后一件事儿,就是完成挂载的工作,让我们在230服务器上,像访问本地文件夹一样进行远程的文件访问。操作步骤如下:
第一步:创建一个本地文件夹
mkdir /mnt/share
第二步:用mount命令指向 文件服务器ip “192.168.31.231” + 远程路径“:/share” + 空格 + 本地目录“/mnt/share” ,完成远程目录与本地目录的映射。
mount 192.168.31.231:/share /mnt/share
这样230服务器就可以像读写本地文件一样,来进行远程服务器的访问了。

下面关键的问题来了,我们如何实现文件的挂在呢?这就需要先了解在docker中文件挂载的用法:
方法一:将数据映射到本地目录(不推荐--容易造成信息丢失)


方法二:利用卷(Volume)的方式进行挂载
启动nginx容器,注意-v的映射关系是宿主机nginx-config(Volume)到容器内/usr/share/nginx/html路径的映射,实际上就是宿主机文件目录/var/lib/docker/volumes/nginx-html/_data到容器内/usr/share/nginx/html路径的映射。
docker run -d --name volume-nginx \ -p 80:80 \ -v nginx-html:/usr/share/nginx/html/ \ nginx:latest
容器启动之后,我们再去看一下“/var/lib/docker/volumes/nginx-html/_data"路径,我们发现这个路径下多出来一些文件,都是nginx默认的html文件
这就是Volumes的好处:

第一步:在docker服务器上 变更 未来docker数据的存储地址,这个操作主要集中在一个配置文件daemon.json(docker的环境配置文件)
vim /etc/docker/daemon.json

标签:容器,文件共享,share,192.168,nginx,NFS,服务器,docker,nfs
From: https://www.cnblogs.com/lijinping321/p/17842857.html

相关文章

  • NFS共享
    NFS共享一、服务端1.服务端安装nfs-utils、rcpbind软件包yum-yinstallnfs-utilsrpcbind2.设置开机并启动foriinrpcbindnfs;dosystemctlenable$i--now;done3.服务端设置共享目录mkdir/data/backup/jcms4.nfs配置共享位置的配置文件vi/etc/exports/dat......
  • CentOS7使用Docker-compose管理容器
    1.容器化的概念容器化是将应用程序代码和依赖项捆绑到一个单一的虚拟包中。容器化应用程序通常与其他应用程序并排放置,并通过计算机、服务器或云上的共享操作系统运行。2.容器化使用的场景1.简化不同环境配置差异虚拟机的最大好处是能在你的硬件设施上运行各种配置不一样的平......
  • Docker自定义网段实现容器间的互访【开发环境中】
    我们都知道docker容器之间是互相隔离的,不能互相访问,但如果有些依赖关系的服务要怎么办呢,所以自定义网段实现容器间的互访。Docker安装好之后默认会创建三个虚拟网卡,可以使用dockernetworkls命令来查看,三个虚拟网卡和VMware的类似。bridge是默认的网卡,网络驱动是bridg......
  • day01 容器化的几种架构方式-pod创建过程原理-Scheduler的多种调度策略总结 (1.1-1.3
    一、容器化的几种架构方式1.、容器的由来及变迁史Docker->Docker-compose->Docerswarm->Kubernetes2、微服务容器化的几种解决方案特性DockerSwarm  Kubernetes安装和集群配置安装简单,集群不强大但在很复杂,集群非常强大图形用户界面没有官方图形界面,依托......
  • podman容器无法从外部连接
    启动容器时添加--nethost参数即可podmanrun-d-p80:80--rm--network=host--namenginxnginx如果有防火墙可以尝试放行端口#放行ufwallow80#关闭ufwdeny80......
  • 一万五千字C++STL【容器】详解(转载)
    一、什么是容器?所谓容器,就是可以承载,包含元素的一个器件,它是STL六大组件之一,是容器、算法、迭代器中最重要也是最核心的一部分。二、STL中各大容器的结构与分类2.1顺序性容器2.1.1什么是顺序性容器?顺序性容器就是将一组具有相同类型的元素以严格的线性形式组织起来2.1.2......
  • 源启容器平台KubeGien 打造云原生转型的破浪之舰
    ​云原生是应用上云的标准路径,也是未来发展大的趋势。如何将业务平滑过渡到云上?怎样应对上云期间的各项挑战呢?中电金信基于金融级数字底座“源启”打造了一款非常稳定可靠、多云异构、安全可控、开放灵活的容器平台产品——源启容器平台KubeGien,是源启四大平台之一的数字基础支撑......
  • 网络文件共享服务
    网络文件共享服务存储类型DASNASSANftp应用级NFS内核级1.FTPFTP文件传输协议ftp工作原理安装yuminstall-yftpwindows自带ftp功能两种模式主动模式客户端的端口号是随机的,服务端主动开启20端口被动模式客户端和服务端的端口号都是随机的端口号ftp......
  • Docker开始收费了,开始转学podman【第一篇podman容器的安装和基本操作】
    podman什么是Podman?Podman是无守护程序容器引擎,用于在Linux系统上开发,管理和运行OCI容器。容器可以以root用户或无根模式运行。简而言之:`aliasdocker=podman`。Podman(PodManager)是一个功能齐全的容器引擎,它是一个简单的无守护工具。Podman提供了一个类似Docker-CLI的命令......
  • 前端项目容器化(Docker)打包部署
    前端项目容器化(Docker)打包部署新建一个vue项目增加容器配置docker命令打包镜像,部署本机BiliBili视频同步发布新建vue项目使用vue官方脚手架创建一个项目下面的demo使用默认配置安装依赖并运行#使用vue脚手架创建项目npmcreatevue@latest#进入项目(假设项......