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

2022-02-10 10:04:04 字數 1697 閱讀 9532

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

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

from ubuntu

env debian_frontend noninteractive

run apt-get update -qq && apt-get install -y nfs-kernel-server runit inotify-tools -qq

run mkdir -p /exports

volume /exports

expose 111/udp 2049/tcp

docker build -t=scottkiss/nfs .
執行該命令需要一段時間,成功後執行

docker images
將會看到本地剛剛建立nfs的docker映象

執行

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,這裡為了便於試驗,盡量使用了簡單粗暴的方式。

##文件資訊

原文**:

使用docker搭建gitlab

github上開源映象位址 建立私有key,生成簽名需要的csr,證書簽名,提供dhe引數而後建立資料夾certs,將dhparam.pem,gitlab.crt,gitlab.key放進去。mv資料夾certs到 opt gitlab data 下。參考 ssl 注 1.gitlab host g...

使用docker搭建tomcat,mysql服務

搭建環境 ubuntu16.04 lts x64 簡單粗暴這裡使用deb包安裝docker執行環境安裝 sudo dpgk i docker ce 18.06.0 ce 3 0 ubuntu amd64.deb ps 如果提示缺少依賴,安裝對應依賴包就可以。docker pull tomcat 8....

使用docker搭建nextcloud

nextcloud 是基於雲技術的工程教育平台,利用雲技術,提高工程教育過程中教學 實驗與創新的效率與效果。1.今天只做nextcloud 記錄與講解,當前現在很多開源網盤很好用,都可以去嘗試自己去搞一下 主要特點 1 開源且免費,可以自定義外掛程式開發 2 全客戶端的支援,免費更好,ui還算不錯 ...