Docker容器中挂载NFS共享目录

article/2025/11/9 11:33:29

之前在https://blog.csdn.net/fengbingchun/article/details/110561129 介绍过使用Dockerfile构建ubuntu 16.04镜像,并在容器中编译执行Messy_Test项目.这里介绍下如何在容器中挂载NFS服务器上的共享目录.

Dockerfile内容如下:

FROM ubuntu:16.04
LABEL maintainer="FengBingchun fengbingchun@163.com" \version="1.0" \description="dockerfile test"
RUN dep_items='git g++-5 nfs-common make' \&& apt-get update \&& apt-get install -y $dep_items \&& ln -s /usr/bin/g++-5 /usr/bin/g++ \&& ln -s /usr/bin/gcc-5 /usr/bin/gcc \&& mkdir -p /mnt/nfs \&& rm -rf /var/lib/apt/lists/*

构建镜像,执行以下命令后会成功生成名字为fengbingchun/ubuntu:16.04的镜像:

docker build -t fengbingchun/ubuntu:16.04 .

通过挂载主机目录,新建容器test,执行以下命令中的一条,推荐使用第一条:

docker run --cap-add sys_admin -it -P --name test --mount type=bind,source=e:\GitCode\docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash
docker run --privileged=true -it -P --name test --mount type=bind,source=e:\GitCode\docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash

在容器内依次执行如下命令进行挂载,假设nfs服务器ip为10.107.2.1,共享目录为shared:

/etc/init.d/rpcbind start
mount -t nfs 10.107.2.1:/shared /mnt/nfs

创建软链接,并将cmake可执行文件路径加入环境变量,依次执行如下命令:

ln -s /mnt/nfs/Ubuntu-16.04/ /usr/local/toolchains
echo "export PATH=/usr/local/toolchains/bin:$PATH" >> /etc/profile
source /etc/profile

因此创建镜像时并没有安装cmake,执行source命令后,执行cmake --version可看到cmake版本相关信息,如下图所示:

然后在容器内,cd到/home/fengbingchun目录下,clone Messy_Test执行以下命令:

git clone https://github.com/fengbingchun/Messy_Test

然后cd到Messy_Test/prj/linux_cmake_CppBaseTest目录下,依次执行如下命令:

./build.sh
./build/CppBaseTest

执行结果如下图所示,说明通过Dockerfile构建的镜像,并在容器内挂载NFS共享目录后,通过共享目录中的cmake可正常编译执行Messy_Test:

在容器内也可查看NFS服务器共享了哪些目录,执行以下命令:

showmount -e 10.107.2.1

保存镜像fengbingchun/ubuntu:16.04到tar包,执行以下命令:

docker save -o ubuntu_16.04.tar fengbingchun/ubuntu:16.04

将ubuntu_16.04.tar拷贝到ubuntu系统下,从tar包加载一个镜像,执行以下命令:

docker load -i ubuntu_16.04.tar

然后执行windows上类似的操作,在新创建的容器test中编译、执行Messy_Test,依次执行如下命令:

docker run --privileged=true -it -P --name test --mount type=bind,source=/home/xxxx/Disk/GitHub/docker,target=/home/fengbingchun fengbingchun/ubuntu:16.04 /bin/bash
/etc/init.d/rpcbind start
mount -t nfs 10.107.2.1:/shared /mnt/nfs
ln -s /mnt/nfs/Ubuntu-16.04/ /usr/local/toolchains
echo "export PATH=/usr/local/toolchains/bin:$PATH" >> /etc/profile
source /etc/profile
cd /home/fengbingchun/
git clone https://github.com/fengbingchun/Messy_Test
cd Messy_Test/prj/linux_cmake_CppBaseTest/
./build.sh
./build/CppBaseTest

执行结果如下图所示:说明在Windows上生成的镜像打包后,在Ubuntu上load后可正常使用:

注意:

(1).在ubuntu上,创建容器时要使用"--privileged=true",否则执行挂载时会报"mount.nfs: access denied by server while mounting 10.107.2.1:/shared"的错误;

(2).在Windows上有时在容器中会有卡死的现象,可删除此容器,然后再新建容器.


http://chatgpt.dhexx.cn/article/XNRGkPFy.shtml

相关文章

LINUX 下创建NFS共享目录

Linux下创建NFS共享目录的步骤如下 实验中服务器端IP为10.201.86.204,客户端IP为10.201.86.2051.在服务器端格式化需要共享的磁盘 fdisk /dev/sdb mkfs.xfs -f /dev/sdb12.安装NFS软件包 Server端和客户端都要安装 rpm -qa |grep nfs-utils rpm -qa |grep rpcb…

NFS共享存储服务介绍与案例详细配置过程

目录 1,什么是NFS?2,NFS工作原理3,使用NFS发布共享资源4,NFS 挂载原理5,NFS服务所需软件及主要配置文件安装NFS服务,需要安装两个软件,分别是: 6, NFS的相关文件&#x…

NFS 共享目录

今天用迅为的itop-4412的开发板 挂载nfs 把流程写一下,和遇到的问题。图片用的开发手册的图片 我有的没截图 1、搭建 NFS 服务器 实现 NFS,需要一个主机作为 NFS 服务器,选择虚拟机 Ubuntu 作为主机。首先需要在 在虚拟机 Ubuntu 上安装 Ub…

Linux的NFS共享目录

准备工作 1.准备两台虚拟机,一台作为服务器,一台作为客户机: 配置服务器ip地址:192.168.101.2 配置客户机ip地址:192.168.101.3 2.关闭两台的防火墙:systemctl stop firewalld.service 检查防火墙是否…

NFS共享服务搭建详细流程

标题DNF共享服务搭建详细流程 1. 概述 NFS(Network File System) 网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源。在NFS的应用中,本地NFS的客户端应用可以透明地读写位于远端NFS服务器上的…

(转)企业级NFS网络文件共享服务

企业级NFS网络文件共享服务 原文:http://www.cnblogs.com/chensiqiqi/archive/2017/03/10/6530859.html --本教学笔记是本人学习和工作生涯中的摘记整理而成,此为初稿(尚有诸多不完善之处),为原创作品,允许…

YUM仓库及NFS共享服务理论

文章目录 一、YUM仓库1.YUM概述2.准备安装源3.访问YUM仓库 二、FNS共享存储服务1.NFS概念2.NFS使用场景3.NFS服务 一、YUM仓库 1.YUM概述 YUM(Yellow dog Updater Modified) ●基于RPM包构建的软件更新机制 ●可以自动解决依赖关系 ●所有软件包由集中的YUM软件仓库提供 2.准…

NFS共享

nfs 简介 nfs特点 NFS(Network File System)网络文件系统,是FreeBSD支持的文件系统中的一种,它允许网络中的计算机之间通过TCP/IP网络共享资源在NFS的应用中的,本地的客户端应用可以透明的读写位于远端NFS服务器上的…

ELO排名算法

在wow lol 11平台等游戏中,都采用了一种排名算法,这种算法叫ELO,是一个叫ELO的人发明的,最开始用于国际象棋比赛计分。 Ra Ra K(Sa-Ea) 对于A来说,初始Rank值为Ra,一局结束后为 Ra。这里关键是K&#xff…

天梯匹配规则ELO

ELO Rating System 是当今对弈水平评估的公认权威规则,已被广泛应于国际象棋、围棋、足球和篮球等体育运动以及游戏中。例如星际争霸天梯排行,魔兽世界竞技场,Dota天梯系统,LOL匹配等游戏的竞技比赛系统中。ELO是一套较为完善的评…

欧拉算法的实现

代码 from matplotlib import pyplot as plt import numpy as np h 0.01 yy [] xx [] yy.append(1) xx.append(0) def y1(m,n): return m - 2*n/m for i in range(100): k1 y1(yy[i],xx[i]) y yy[i] hy1(yy[i],xx[i]) xx.append(xx[i]h) k2 y1(y,xx[i1]) yy.append(…

《机器学习算法竞赛实战》整理 | 八、实战案例:Elo Merchant Category Recommendation

详情请参见原书 ​​​​​《机器学习算法竞赛实战(图灵出品)》(王贺,刘鹏,钱乾)【摘要 书评 试读】- 京东图书 前言 比赛链接: https://www.kaggle.com/competitions/elo-merchant-category-recommendation/overvi…

ELK日志分析系统之ELK原理

目录 引言 一、ELK简介 1、ELK日志分组组成 Elasticsearch(es) Logstash Kibana 2、日志处理步骤 二、Elasticsearch详解 1、Elasticsearch概述 2、Elasticsearch核心概念 三、Logstash详解 1、Logstash的主要组件 四、Kibana详解 1、Kiba…

大数据技术ELK实时检索

一 elasticsearch简介 ElasticSearch是一个高性能,基于Lucene的全文检索服务,是一个分布式的Restful风格的搜索和数据分析引擎,也可以作为NoSQL数据库使用。 对Lucene进行了扩展 原型环境和生产环境可无缝切换 能够水平扩展 支持结构化和非结…

调用链追踪:如何通过 ELK 实现日志检索?

调用链追踪:如何通过 ELK 实现日志检索? 上篇文章中,我们借助 Sleuth 和 Zikpin 的合力,搭建了一套调用链追踪系统,它可以帮助我们串联调用链中的上下游访问单元,快速定位线上异常出现在哪个环节。不过呢&…

【Algorithm】藏在Ranking中的ELo

写在前面的ELO 什么是ELO算法算法模型算法原理验证 总结 写在前面的 今天偶尔在BlueHole的HOT FIX&UPDATES的说明中看到了下面的一段话:Next Tuesday, August 1st, we will reset our leaderboard once again. Now that we are getting closer to launch, we wi…

欧拉路径:Hierholzer算法

Hierholzer 算法是一种用于求欧拉路径的算法。欧拉路径指的是,如果在一张图中,可以从一点出发遍历所有的边,每条边只能遍历一次,那么遍历过程中的这条路径就叫做欧拉路径。如果这条路径是闭合的,那就称为欧拉回路。简单…

ELO等级分制度

目录 前言ELO等级分制度 前言 近段重温了经典电影《社交网络》,在电影中 ,Facebook创始人马克扎克伯格在和女友分手后,受到好友爱德华多对核心算法的指引 写下了哈佛女生“选美”网站Facemash,并一气之下黑了学校教务系统&#x…

ELO(埃洛匹配分制度)Java篇

1. ELO算法数学实现介绍 其中表达式各字母含义: EA:预期A玩家的胜负值 EB:预期B玩家的胜负值 RA:A玩家当前的积分 RB:B玩家当前的积分 SA:实际胜负值(A VS B),胜1,平0.5&#xf…

ELK(Elasticsearch、Kibana、Logstash)以及向ES导入mysql数据库数据或CSV文件数据,创建索引和可视化数据

ELK下载 地址:Past Releases of Elastic Stack Software | Elastic 在Products和version处分别选择需要下载的产品和版本,E(elasticsearch)L(logstash)K(kibana)三者版本必须相同 …