使用docker搭建nfs實現容器間共用檔案

來源:互聯網
上載者:User

標籤:

首先介紹下今天的兩個主角:nfs和docker

nfs 是什麼

NFS(Network File System)即網路檔案系統,是FreeBSD支援的檔案系統中的一種,它允許網路中的電腦之間通過TCP/IP網際網路共用資源。在NFS的應用中,本地NFS的用戶端應用可以透明地讀寫位於遠端NFS伺服器上的檔案,就像訪問本地檔案一樣。 摘自百度百科

docker 是什麼

這個就不多說了,近兩年一個非常流行的東西哦。

主角介紹完畢,那麼要說說為什麼要使用docker來搭建nfs,其實本文標題已經說明,主要目的還是為了實現容器間檔案的共用。 用過docker的都應該知道docker可以支援容器目錄掛載到宿主機。而通過nfs,則可以將容器之間的目錄實現共用掛載。如果你有多個容器間需要共用檔案的需求,這個將是一個可以嘗試的方案,具體使用情境看大家發揮想象了,今天這裡主要實踐一下如何?這個功能。

涉及到的知識
  • nfs安裝
  • docker容器間通訊
  • docker privileged
  • dockerfile
  • docker鏡像
編寫dockerfile
FROM ubuntuENV DEBIAN_FRONTEND noninteractiveRUN apt-get update -qq && apt-get install -y nfs-kernel-server runit inotify-tools -qqRUN mkdir -p /exportsVOLUME /exportsEXPOSE 111/udp 2049/tcp
製作docker鏡像
 docker build -t=scottkiss/nfs .

運行該命令需要一段時間,成功後執行

docker images

將會看到本地剛剛建立nfs的docker鏡像

配置並運行nfs伺服器

執行

 

docker run -it --name nfs-server --privileged scottkiss/nfs

執行完畢後進入容器終端

修改配置

vi /etc/exports

在末尾加入

/exports *(rw,sync,no_subtree_check,fsid=0,no_root_squash)

然後執行

exportfs -r

接著啟動rpcbind服務

service rpcbind start

最後啟動nfs服務

 

service nfs-kernel-server start

至此,不出意外,已經成功的啟動了nfs伺服器,並且將/exports目錄共用了出去。這裡,筆者在開始的時候遇到一坑, 就是啟動時候需要加上–privileged參數,否則啟動nfs服務時候會提示許可權不足報錯。主要是這個過程中涉及到了mount操作, 使用該參數後使得container內的root擁有真正的root許可權,這樣就不會報錯了。

配置並啟動用戶端

用戶端就簡單多了,不需要像伺服器那樣配置了。 執行

docker run -it --link nfs-server:nfs  --privileged scottkiss/nfs

進入容器終端。然後執行

service rpcbind start

接著執行遠程掛載命令

mount -t nfs -o proto=tcp,port=2049 $NFS_PORT_2049_TCP_ADDR:/exports /home

這樣,便將伺服器的exports目錄掛載到了用戶端的home目錄了。

迫不及待的可以試試了,如在server終端的/exports目錄下添加一個檔案,在client的/home下也會同步添加。

 

這裡涉及的主要就是–link參數,這個參數就是告訴Docker容器需要使用nfs-server這個容器並將其別名命名為nfs。這樣,就可以使用$NFS_PORT_2049_TCP_ADDR來擷取伺服器ip了。

總結

以上所有只是為了測試而做的一個粗糙的方案,還有很多改進之處,包括dockerfile,這裡為了便於實驗,盡量使用了簡單粗暴的方式。

##文檔資訊

  • 著作權聲明:自由轉載-非商用-非衍生-保持署名 | Creative Commons BY-NC-ND 3.0
  • 原文網址:http://www.cocosk.com/articles/2016⁄2/16/docker-nfs.html
  • 臥雪Sirk

使用docker搭建nfs實現容器間共用檔案

聯繫我們

該頁面正文內容均來源於網絡整理,並不代表阿里雲官方的觀點,該頁面所提到的產品和服務也與阿里云無關,如果該頁面內容對您造成了困擾,歡迎寫郵件給我們,收到郵件我們將在5個工作日內處理。

如果您發現本社區中有涉嫌抄襲的內容,歡迎發送郵件至: info-contact@alibabacloud.com 進行舉報並提供相關證據,工作人員會在 5 個工作天內聯絡您,一經查實,本站將立刻刪除涉嫌侵權內容。

A Free Trial That Lets You Build Big!

Start building with 50+ products and up to 12 months usage for Elastic Compute Service

  • Sales Support

    1 on 1 presale consultation

  • After-Sales Support

    24/7 Technical Support 6 Free Tickets per Quarter Faster Response

  • Alibaba Cloud offers highly flexible support services tailored to meet your exact needs.