docker部署redis集群 怎么用除了宿主機(jī)ip之外的其它ip從宿主機(jī)瀏覽器訪問docker容器?
怎么用除了宿主機(jī)ip之外的其它ip從宿主機(jī)瀏覽器訪問docker容器?我不知道尤里卡是什么,但我理解你所描述的問題。讓我告訴你一些類似于redis的事情。我希望它能給你帶來一些想法。在redis4.0
怎么用除了宿主機(jī)ip之外的其它ip從宿主機(jī)瀏覽器訪問docker容器?
我不知道尤里卡是什么,但我理解你所描述的問題。讓我告訴你一些類似于redis的事情。我希望它能給你帶來一些想法。
在redis4.0之前,在docker中構(gòu)建redis群集不支持natted環(huán)境。Redis集群具有碎片化的概念,即一個密鑰的數(shù)據(jù)按照碎片化規(guī)則落在不同的節(jié)點(diǎn)上。當(dāng)您訪問落在節(jié)點(diǎn)B上的密鑰時,redis server會返回move,但是在docker中,我們使用私有IP地址和端口來映射容器,所以redis server返回給redis客戶端的移動信息是B節(jié)點(diǎn)的私有IP地址和B節(jié)點(diǎn)所在容器的映射端口。因此,redis客戶端無法訪問B節(jié)點(diǎn)的私有IP地址和端口。
在redis 4.0之前,我們在docker中構(gòu)建了一個redis集群。我們使用了--net主機(jī)網(wǎng)絡(luò)模式。redis4.0之后,正式提供了natted環(huán)境下IP地址和端口的映射。
解決方案1:運(yùn)行容器時設(shè)置--net host,使容器可以直接使用主機(jī)的IP和端口,但每個容器的Eureka對應(yīng)的配置端口應(yīng)該設(shè)置為不同的,否則會出現(xiàn)端口沖突。
解決方案2:配置Eureka時,將容器和主機(jī)的專用IP地址和端口之間的映射關(guān)系寫入Eureka配置。
docker從容器中怎么訪問宿主機(jī)?
docker與主機(jī)的交互是通過本機(jī)網(wǎng)絡(luò)實(shí)現(xiàn)的。docker進(jìn)程啟動時,它將在主機(jī)上配置一個名為docker 0的虛擬網(wǎng)橋。此接口允許docker將虛擬子網(wǎng)分配給即將啟動的容器。此網(wǎng)橋?qū)⒊洚?dāng)容器中網(wǎng)絡(luò)與主機(jī)網(wǎng)絡(luò)之間接口的主節(jié)點(diǎn)。docker容器啟動后,將創(chuàng)建一個新的虛擬接口,并在網(wǎng)橋子網(wǎng)中分配一個IP地址。此IP地址嵌入到容器網(wǎng)絡(luò)中,用于提供從容器網(wǎng)絡(luò)到docker 0網(wǎng)橋的通道。Docker自動配置iptables規(guī)則來釋放和配置NAT。在主機(jī)上連接docker 0后,可以訪問主機(jī)的MySQL數(shù)據(jù)文件。
docker從容器中怎么訪問宿主機(jī)?
docker構(gòu)建LNMP環(huán)境后,如果需要訪問主機(jī)上安裝的數(shù)據(jù)庫或中間件,則不能直接使用IP 127.0.0.1,它指向容器中的容器本身。如何訪問主機(jī)例如,如果docker環(huán)境的虛擬IP是192.168.99.100,那么主機(jī)也將承載一個與192.168.99.100網(wǎng)段相同的虛擬IP,主機(jī)IP將是192.168.99.1。在容器中很容易訪問192.168.99.1,這相當(dāng)于訪問主機(jī)。請注意,通過192.168.99.1訪問主機(jī)相當(dāng)于更改IP如果庫或中間件限制本地訪問或IP段限制,請記住將192.168.99.1添加到白名單
有兩種常見方案;
方案1:
主機(jī)執(zhí)行ifconfig
它將看到docker 0的IP,您可以使用訪問的主機(jī)詢問主機(jī)。
方案2:[批準(zhǔn)]主機(jī).docker.internal
將
127.0.0.1添加到主機(jī)文件主機(jī).docker.internal