Docker容器中掛載NFS共享目錄的實現(xiàn)
之前在http://www.dbjr.com.cn/article/205922.htm 介紹過使用Dockerfile構(gòu)建ubuntu 16.04鏡像,并在容器中編譯執(zhí)行Messy_Test項目.這里介紹下如何在容器中掛載NFS服務(wù)器上的共享目錄.
Dockerfile內(nèi)容如下:
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/*
構(gòu)建鏡像,執(zhí)行以下命令后會成功生成名字為fengbingchun/ubuntu:16.04的鏡像:
docker build -t fengbingchun/ubuntu:16.04 .
通過掛載主機(jī)目錄,新建容器test,執(zhí)行以下命令中的一條,推薦使用第一條:
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
在容器內(nèi)依次執(zhí)行如下命令進(jìn)行掛載,假設(shè)nfs服務(wù)器ip為10.107.2.1,共享目錄為shared:
/etc/init.d/rpcbind start mount -t nfs 10.107.2.1:/shared /mnt/nfs
創(chuàng)建軟鏈接,并將cmake可執(zhí)行文件路徑加入環(huán)境變量,依次執(zhí)行如下命令:
ln -s /mnt/nfs/Ubuntu-16.04/ /usr/local/toolchains echo "export PATH=/usr/local/toolchains/bin:$PATH" >> /etc/profile source /etc/profile
因此創(chuàng)建鏡像時并沒有安裝cmake,執(zhí)行source命令后,執(zhí)行cmake --version可看到cmake版本相關(guān)信息,如下圖所示:

然后在容器內(nèi),cd到/home/fengbingchun目錄下,clone Messy_Test執(zhí)行以下命令:
git clone https://github.com/fengbingchun/Messy_Test
然后cd到Messy_Test/prj/linux_cmake_CppBaseTest目錄下,依次執(zhí)行如下命令:
./build.sh ./build/CppBaseTest
執(zhí)行結(jié)果如下圖所示,說明通過Dockerfile構(gòu)建的鏡像,并在容器內(nèi)掛載NFS共享目錄后,通過共享目錄中的cmake可正常編譯執(zhí)行Messy_Test:

在容器內(nèi)也可查看NFS服務(wù)器共享了哪些目錄,執(zhí)行以下命令:
showmount -e 10.107.2.1
保存鏡像fengbingchun/ubuntu:16.04到tar包,執(zhí)行以下命令:
docker save -o ubuntu_16.04.tar fengbingchun/ubuntu:16.04
將ubuntu_16.04.tar拷貝到ubuntu系統(tǒng)下,從tar包加載一個鏡像,執(zhí)行以下命令:
docker load -i ubuntu_16.04.tar
然后執(zhí)行windows上類似的操作,在新創(chuàng)建的容器test中編譯、執(zhí)行Messy_Test,依次執(zhí)行如下命令:
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
執(zhí)行結(jié)果如下圖所示:說明在Windows上生成的鏡像打包后,在Ubuntu上load后可正常使用:

注意:
(1).在ubuntu上,創(chuàng)建容器時要使用"--privileged=true",否則執(zhí)行掛載時會報"mount.nfs: access denied by server while mounting 10.107.2.1:/shared"的錯誤;
(2).在Windows上有時在容器中會有卡死的現(xiàn)象,可刪除此容器,然后再新建容器.
到此這篇關(guān)于Docker容器中掛載NFS共享目錄的實現(xiàn)的文章就介紹到這了,更多相關(guān)Docker掛載NFS共享目錄內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
Docker安裝方法與Docker四種網(wǎng)絡(luò)模式詳解
今天小編就為大家分享一篇關(guān)于Docker安裝方法與Docker四種網(wǎng)絡(luò)模式的詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2018-09-09
Docker?link實現(xiàn)容器互聯(lián)的方式
通過link方式創(chuàng)建容器,然后我們可以使用被link容器的別名進(jìn)行訪問。本文重點給大家介紹Docker?link實現(xiàn)容器互聯(lián)的方式,感興趣的朋友一起看看吧2021-12-12
docker 實現(xiàn)容器與宿主機(jī)無縫調(diào)用shell命令
這篇文章主要介紹了docker 實現(xiàn)容器與宿主機(jī)無縫調(diào)用shell命令的操作,具有很好的參考價值,希望對大家有所幫助。一起跟隨想過來看看吧2021-03-03
Docker跨主機(jī)網(wǎng)絡(luò)(manual)的實現(xiàn)
這篇文章主要介紹了Docker跨主機(jī)網(wǎng)絡(luò)(manual)的實現(xiàn),文中通過示例代碼介紹的非常詳細(xì),對大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧2019-12-12
Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析
在本篇文章里小編給大家整理的是關(guān)于Docker鏡像導(dǎo)出與導(dǎo)入與拷貝實例分析,有需要的朋友們可以參考下。2020-02-02
Docker容器上用DockerFile部署多個tomcat服務(wù)的步驟
這篇文章主要介紹了Docker容器上用DockerFile部署多個tomcat服務(wù)的步驟,具有很好的參考價值,希望對大家有所幫助。一起跟隨小編過來看看吧2020-11-11
Docker部署MinIO對象存儲服務(wù)器結(jié)合Cpolar實現(xiàn)遠(yuǎn)程訪問的操作方法
MinIO是一個開源的軟件,可以免費(fèi)使用,還可以在普通硬件上運(yùn)行,降低了存儲成本,本文介紹在本地Docker中部署MinIO服務(wù),并實現(xiàn)遠(yuǎn)程訪問管理界面,節(jié)約云服務(wù)器運(yùn)行成本,感興趣的朋友一起看看吧2023-12-12
jenkins+gitlab+nginx部署前端應(yīng)用實現(xiàn)
在日常開發(fā)中,往往可能同時多個項目并行進(jìn)行開發(fā),本文介紹了jenkins+gitlab+nginx部署前端應(yīng)用實現(xiàn),感興趣的可以了解一下2021-05-05

