主頁(yè) > 知識(shí)庫(kù) > Docker容器中掛載NFS共享目錄的實(shí)現(xiàn)

Docker容器中掛載NFS共享目錄的實(shí)現(xiàn)

熱門標(biāo)簽:陜西辦理400電話 株洲電銷 海外工廠地圖標(biāo)注 地圖標(biāo)注小程序 南充電銷外呼系統(tǒng) 信陽(yáng)電銷外呼系統(tǒng)怎么樣 宿州外呼系統(tǒng)公司 南昌外呼系統(tǒng)定制 貴陽(yáng)網(wǎng)絡(luò)外呼系統(tǒng)軟件

之前在https://www.jb51.net/article/205922.htm 介紹過使用Dockerfile構(gòu)建ubuntu 16.04鏡像,并在容器中編譯執(zhí)行Messy_Test項(xiàng)目.這里介紹下如何在容器中掛載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í)行以下命令后會(huì)成功生成名字為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)建鏡像時(shí)并沒有安裝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包加載一個(gè)鏡像,執(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)建容器時(shí)要使用"--privileged=true",否則執(zhí)行掛載時(shí)會(huì)報(bào)"mount.nfs: access denied by server while mounting 10.107.2.1:/shared"的錯(cuò)誤;

(2).在Windows上有時(shí)在容器中會(huì)有卡死的現(xiàn)象,可刪除此容器,然后再新建容器.

到此這篇關(guān)于Docker容器中掛載NFS共享目錄的實(shí)現(xiàn)的文章就介紹到這了,更多相關(guān)Docker掛載NFS共享目錄內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!

標(biāo)簽:晉城 汕頭 三明 鄭州 玉林 開封 石嘴山 拉薩

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《Docker容器中掛載NFS共享目錄的實(shí)現(xiàn)》,本文關(guān)鍵詞  Docker,容器,中掛,載,NFS,共享,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《Docker容器中掛載NFS共享目錄的實(shí)現(xiàn)》相關(guān)的同類信息!
  • 本頁(yè)收集關(guān)于Docker容器中掛載NFS共享目錄的實(shí)現(xiàn)的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章