成人国产在线小视频_日韩寡妇人妻调教在线播放_色成人www永久在线观看_2018国产精品久久_亚洲欧美高清在线30p_亚洲少妇综合一区_黄色在线播放国产_亚洲另类技巧小说校园_国产主播xx日韩_a级毛片在线免费

資訊專欄INFORMATION COLUMN

解決 docker 容器無法通過 IP 訪問宿主機(jī)問題

CastlePeaK / 4311人閱讀

摘要:?jiǎn)栴}起源在使用的過程中我不幸需要在容器中訪問宿主機(jī)的端口而這個(gè)端口是另外一個(gè)容器端口映射出去的當(dāng)我在容器里通過的網(wǎng)橋訪問宿主機(jī)時(shí)居然發(fā)現(xiàn)查找問題原因可以確定的是容器與宿主機(jī)是有網(wǎng)絡(luò)連接的因?yàn)榭梢栽谌萜鲀?nèi)部通過通宿主機(jī)也可以在容器內(nèi)部訪問其它

問題起源

在使用 docker 的過程中我不幸需要在 docker 容器中訪問宿主機(jī)的 80 端口, 而這個(gè) 80 端口是另外一個(gè)容器 8080 端口映射出去的. 當(dāng)我在容器里通過 docker 的網(wǎng)橋 172.17.0.1 訪問宿主機(jī)時(shí), 居然發(fā)現(xiàn):

curl: (7) Failed to connect to 172.17.0.1 port 80: No route to host
查找問題原因

可以確定的是容器與宿主機(jī)是有網(wǎng)絡(luò)連接的, 因?yàn)榭梢栽谌萜鲀?nèi)部通過 172.17.0.1 Ping 通宿主機(jī):

root@930d07576eef:/# ping 172.17.0.1
PING 172.17.0.1 (172.17.0.1) 56(84) bytes of data.
64 bytes from 172.17.0.1: icmp_seq=1 ttl=64 time=0.130 ms

也可以在容器內(nèi)部訪問其它內(nèi)網(wǎng)和外網(wǎng).
iptables 顯示也允許 docker 容器訪問:

# iptables --list | grep DOCKER
DOCKER-ISOLATION  all  --  anywhere             anywhere            
DOCKER     all  --  anywhere             anywhere            
Chain DOCKER (1 references)
Chain DOCKER-ISOLATION (1 references)

之后在查找一些資料后發(fā)現(xiàn)這個(gè)問題: NO ROUTE TO HOST network request from container to host-ip:port published from other container.

解釋

正如 Docker Community Forms 所言, 這是一個(gè)已知的 Bug, 宿主機(jī)的 80 端口允許其它計(jì)算機(jī)訪問, 但是不允許來自本機(jī)的 Docker 容器訪問. 必須通過設(shè)置 firewalld 規(guī)則允許本機(jī)的 Docker 容器訪問.
gypark 指出可以通過在 /etc/firewalld/zones/public.xml 中添加防火墻規(guī)則避免這個(gè)問題:


    
    

注意這里的 172.17.0.0/16 可以匹配 172.17.xx.xx IP 段的所有 IP.
之后重啟下防火墻:

systemctl restart firewalld

之后就可以在 docker 容器內(nèi)部訪問宿主機(jī) 80 端口.

其它問題

實(shí)際上當(dāng)我又用 vmware 新開了一臺(tái)虛擬機(jī)希望能重現(xiàn)這個(gè)問題的時(shí)候, 發(fā)現(xiàn)在新的虛擬機(jī)上居然沒有類似的問題. 也就是說容器可以直接通過172.17.0.1訪問宿主機(jī) 80 端口, 查看防火墻配置也沒看到有172.17.xx.xx的白名單.
猜測(cè)是由于在新的虛擬機(jī)安裝的 docker 是 Docker version 1.12.5, build 047e51b/1.12.5, 也就是 Red Hat 從 docker 開源版本遷出開發(fā)的版本, 而之前的是 Docker version 17.06.2-ce, build cec0b72 屬于 Docker-CE, 可能是 docker 版本有差異, Red Hat 順便把那個(gè) Known Bug 修復(fù)了.

文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。

轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/27655.html

相關(guān)文章

  • 如何使用Flannel搭建跨主機(jī)互聯(lián)的容器網(wǎng)絡(luò)

    摘要:每個(gè)節(jié)點(diǎn)的網(wǎng)橋使用一個(gè)子網(wǎng),每個(gè)容器使用一個(gè)子網(wǎng)內(nèi)的,那么我們就可以組成下圖中所示網(wǎng)絡(luò)。到此,在的協(xié)調(diào)下,各個(gè)主機(jī)上的子網(wǎng)就不會(huì)再?zèng)_突了,另外,會(huì)維護(hù)容器網(wǎng)絡(luò)的路由規(guī)則,容器就可以通過訪問容器了,也就實(shí)現(xiàn)了跨主機(jī)容器互聯(lián)。 當(dāng)您將多臺(tái)服務(wù)器節(jié)點(diǎn)組成一個(gè)Docker集群時(shí),需要對(duì)集群網(wǎng)絡(luò)進(jìn)行設(shè)置,否則默認(rèn)情況下,無法跨主機(jī)容器互聯(lián),接下來我們首先分析一下原因。 跨主機(jī)容器互聯(lián) 下圖描述了...

    remcarpediem 評(píng)論0 收藏0
  • FAQ寶典之常見問題排查與修復(fù)方法

    摘要:日志會(huì)顯示令牌過期的信息,隨后檢查主機(jī)和主機(jī)的時(shí)鐘是否同步。如果這個(gè)子網(wǎng)已經(jīng)被使用,你將需要更改網(wǎng)絡(luò)中使用的默認(rèn)子網(wǎng)。如果負(fù)載均衡器處于初始化狀態(tài),則很可能主機(jī)之間無法進(jìn)行跨主機(jī)通信。而一直顯示黃色初始化狀態(tài),說明一直沒有通過健康檢查。 一、服務(wù)/容器 1、為什么我只能編輯容器的名稱? Docker容器在創(chuàng)建之后就不可更改了。唯一可更改的內(nèi)容是我們要存儲(chǔ)的不屬于Docker容器本身的那...

    LdhAndroid 評(píng)論0 收藏0
  • Docker容器間通信方法

    摘要:而本文主要針對(duì)容器間的網(wǎng)絡(luò)通信方法進(jìn)行討論。而同屬于用戶自定義的容器之間自動(dòng)將所有端口暴露,方便容器間進(jìn)行無障礙的通信,而不會(huì)遭受到外界的意外訪問。幾天前,為了解決日常在本地進(jìn)行日常工作和開發(fā)測(cè)試之間的矛盾,利用docker在Windows系統(tǒng)中搭建了基于Linux的測(cè)試環(huán)境:借助Docker,在win10下編碼,一鍵在Linux下測(cè)試。在這邊文章里主要介紹了如何在本地通過docker構(gòu)建與...

    qianfeng 評(píng)論0 收藏0

發(fā)表評(píng)論

0條評(píng)論

最新活動(dòng)
閱讀需要支付1元查看
<