docker分配獨(dú)立ip 宿主機(jī)telnet不通docker容器內(nèi)的ip地址怎么解決?
宿主機(jī)telnet不通docker容器內(nèi)的ip地址怎么解決?docker構(gòu)建LNMP環(huán)境后,如果您需要訪問(wèn)安裝在主機(jī)上的數(shù)據(jù)庫(kù)或中間件,則不能直接使用IP 127.0.0.1,它指向容器中的容器本身。
宿主機(jī)telnet不通docker容器內(nèi)的ip地址怎么解決?
docker構(gòu)建LNMP環(huán)境后,如果您需要訪問(wèn)安裝在主機(jī)上的數(shù)據(jù)庫(kù)或中間件,則不能直接使用IP 127.0.0.1,它指向容器中的容器本身。如何訪問(wèn)主機(jī)例如,如果docker環(huán)境的虛擬IP是192.168.99.100,那么主機(jī)也將承載一個(gè)與192.168.99.100網(wǎng)段相同的虛擬IP,主機(jī)IP將是192.168.99.1。在容器中很容易訪問(wèn)192.168.99.1,這相當(dāng)于訪問(wèn)主機(jī)。請(qǐng)注意,通過(guò)192.168.99.1訪問(wèn)主機(jī)相當(dāng)于更改IP庫(kù)或中間件限制本地訪問(wèn)或IP段限制。請(qǐng)記住將192.168.99.1添加到白名單中
我不知道Eureka是什么,但我理解您描述的問(wèn)題。讓我告訴你一些類似于redis的東西,希望能給你帶來(lái)一些想法。
在redis4.0之前,在docker中構(gòu)建redis群集不支持natted環(huán)境。Redis集群具有碎片化的概念,即一個(gè)密鑰的數(shù)據(jù)按照碎片化規(guī)則落在不同的節(jié)點(diǎn)上。當(dāng)您訪問(wèn)落在節(jié)點(diǎn)B上的密鑰時(shí),redis server會(huì)返回move,但是在docker中,我們使用私有IP地址和端口來(lái)映射容器,所以redis server返回給redis客戶端的移動(dòng)信息是B節(jié)點(diǎn)的私有IP地址和B節(jié)點(diǎn)所在容器的映射端口。因此,redis客戶端無(wú)法訪問(wèn)B節(jié)點(diǎn)的私有IP地址和端口。
在redis 4.0之前,我們?cè)赿ocker中構(gòu)建了一個(gè)redis集群。我們使用了--net主機(jī)網(wǎng)絡(luò)模式。redis4.0之后,正式提供了natted環(huán)境下IP地址和端口的映射。
解決方案1:運(yùn)行容器時(shí)設(shè)置--net host,使容器可以直接使用主機(jī)的IP和端口,但每個(gè)容器的Eureka對(duì)應(yīng)的配置端口應(yīng)該設(shè)置為不同的,否則會(huì)出現(xiàn)端口沖突。
解決方案2:配置Eureka時(shí),將容器和主機(jī)的專用IP地址和端口之間的映射關(guān)系寫(xiě)入Eureka配置。
塢網(wǎng)基礎(chǔ)-塢跨主機(jī)容器訪問(wèn)通信;默認(rèn)情況下,同一主機(jī)中的DOCKER容器相互連接。IP地址可以通過(guò)docker inspection ID或name查看。Ping可以在不可訪問(wèn)的容器中執(zhí)行。然而,我們發(fā)現(xiàn)每個(gè)引導(dǎo)容器的IP地址是不固定的,所以如果我們通過(guò)IP地址互連,顯然是不可靠的。但是,我們發(fā)現(xiàn)這些IP地址在同一網(wǎng)段中,默認(rèn)值為127.0.0。十、這是docker容器默認(rèn)情況下跨主機(jī)鏈接的第一種方式:Bridge實(shí)現(xiàn);如果在docker主機(jī)上運(yùn)行ifconfig命令,可以看到存在docker 0橋。Docker容器通過(guò)Docker 0橋?qū)崿F(xiàn)同一主機(jī)上容器的IP地址分配和訪問(wèn)。因此,如果希望docker跨主機(jī)訪問(wèn),最簡(jiǎn)單的方法是將不同主機(jī)的docker 0設(shè)置為同一網(wǎng)段。