Docker容器實現跨主機檔案共享 NFS伺服器

2021-10-13 21:45:24 字數 3377 閱讀 7948

三、客戶端容器掛載

四、開機配置

總結需求:任意修改客戶端容器內共享目錄的內容,在伺服器的的宿主機或者容器內也能看到實時的修改

技術:nfs、dockers

原理:先利用nfs建立服務端與客戶端之間的共享空間,再利用docker技術將客戶端容器的某個目錄掛載到共享目錄,就能實現需求。同理,採用上述方法也能實現跨主機的容器之間檔案的共享。

主要介紹nfs服務的安裝,docker的安裝可以自行查閱資料

//服務端

yum -y install rpcbind nfs-utils

systemctl start rpcbind

systemctl enable rpcbind

systemctl start nfs-server  //nfs依賴rpcbind進行通訊,所以要先啟動rpcbind

systemctl enable nfs-server

//檢視埠

//客戶端

yum -y install nfs-utils

服務端:192.168.57.128(centos7.6 )客戶端:192.168.57.129(centos_clone)

//服務端

mkdir /mnt/nfs_file

//客戶端

mkdir /mnt/nfs_file

vim /etc/exports
/mnt/nfs_file/

192.168

.57.0/24

(rw,sync,no_root_squash)

//ro唯讀許可權

//rw讀寫許可權

//sync同步寫入記憶體與磁碟當中

//no_all_squash保留共享檔案的uid和gid(預設)

//no_root_squash使得root使用者具有根目錄的完全訪問許可權

//配置生效

//掛載測試

出現上圖報錯時,需要關閉服務端與客戶端之間的防火牆,或者開放nfs使用的2049埠。

systemctl stop firewalld

//新增規則(指定埠,--permanent永久生效,沒有此引數重啟後失效)

//firewall-cmd --zone=public --add-port=2049/tcp --permanent

然後,出現下圖結果表示服務一切正常。

客戶端:

服務端:

建立容器時指定對應關係:

docker run-it -v /宿主機絕對路徑目錄:

/容器內目錄 映象名

docker run -itd -e "container=docker"

--privileged=true -v /mnt/nfs_file:

/mnt --name test -h test test:

1222

/usr/sbin/init

再容器內掛載點建立檔案:

此時再伺服器上能夠看到新建的檔案:

此時再服務端主機上對檔案333新增內容,在客戶端容器裡能看到想要修改:

為保證每次裝置重啟後環境nfs環境正常並且增加可靠性,可以修改啟動檔案

/etc/rc.local

//服務端

#!/bin/bash

touch /var/lock/subsys/local

systemctl stop firewalld

rm -rf /mnt/nfs_file

mkdir /mnt/nfs_file

exportfs -rv

//客戶端

#!/bin/bash

touch /var/lock/subsys/local

systemctl stop firewalld

rm -rf /mnt/nfs_file

mkdir /mnt/nfs_file

mount -t nfs 192.168

.57.128

:/mnt/nfs_file /mnt/nfs_file

到此,需求已經基本實現。

可以在服務端也建立容器進行掛載,這樣就能實現跨主機容器與容器之間的檔案共享。

參考部落格:

docker跨主機容器訪問(網橋實現)

本篇文章主要講述利用網橋方式實現docker跨主機容器訪問,參考文章 docker網路基礎 docker跨主機容器訪問通訊 在同一宿主機下的docker的容器之間是預設互相聯通的。在容器內通過ifconfig可以檢視到ip位址。在不同的容器中來執行ping是可以ping通的。但我們通過觀察發現,每乙...

Docker容器跨主機通訊

兩台主機上的docker容器直接通過ip位址進行通訊 各項配置如下 docker version 1.13.1 ip資訊根據個人需求部署 主機1的ip位址為 192.168.1.128 主機2的ip位址為 192.168.1.129 為主機1上的docker容器分配的子網 172.17.1.0 24...

docker跨主機容器通訊

docker 網路模式詳解 路由器位址192.168.1.1用route n檢視 parent enp7s0的乙太網名用ifcofig查詢 apt install net tools iputils ping ydocker network create driver macvlan subnet ...