在线观看不卡亚洲电影_亚洲妓女99综合网_91青青青亚洲娱乐在线观看_日韩无码高清综合久久

鍍金池/ 問答/Java  PHP  Linux  網(wǎng)絡安全/ 關于docker容器里的ip問題?

關于docker容器里的ip問題?

問題描述:
1、我在容器里面跑我的PHP項目,開始的時候,容器是綁定的127.0.0.1:8080,但是。我通過瀏覽器訪問:localhost:8080并沒有訪問到服務器。
2、然后,在容器中,我綁定0.0.0.0:8080。結果,可以通過localhost:8080訪問服務器了。
我的疑問是,容器對ip有沒有做隔離?通過第一步,我感覺容器是隔離了ip,因為容器里面的127.0.0.1和本機的127.0.0.1是隔離的,所以訪問服務器失敗了。因此,我在容器使用了0.0.0.0。但是,對于第二步,好像又是不對的。因為,即使我容器里面用的是0.0.0.0,我在本機用127.0.0.1卻可以訪問到容器里的服務器。所以,對于ip,到底有沒有做隔離?還有就是,如何解釋我前面這兩個過程遇到的問題?
截圖:

1、容器里面的服務如下:

clipboard.png
然后,通過瀏覽器訪問容器里面的服務:

clipboard.png

2、容器里面的服務如下:

clipboard.png
然后,通過瀏覽器訪問容器里面的服務:

clipboard.png

希望前輩們幫我解答一下疑問,謝謝!

回答
編輯回答
別瞎鬧

Docker的四種網(wǎng)絡模式:

Bridge模式

當Docker進程啟動時,會在主機上創(chuàng)建一個名為docker0的虛擬網(wǎng)橋,此主機上啟動的Docker容器會連接到這個虛擬網(wǎng)橋上。虛擬網(wǎng)橋的工作方式和物理交換機類似,這樣主機上的所有容器就通過交換機連在了一個二層網(wǎng)絡中。

從docker0子網(wǎng)中分配一個IP給容器使用,并設置docker0的IP地址為容器的默認網(wǎng)關。在主機上創(chuàng)建一對虛擬網(wǎng)卡veth pair設備,Docker將veth pair設備的一端放在新創(chuàng)建的容器中,并命名為eth0(容器的網(wǎng)卡),另一端放在主機中,以vethxxx這樣類似的名字命名,并將這個網(wǎng)絡設備加入到docker0網(wǎng)橋中??梢酝ㄟ^brctl show命令查看。

bridge模式是docker的默認網(wǎng)絡模式,不寫--net參數(shù),就是bridge模式。使用docker run -p時,docker實際是在iptables做了DNAT規(guī)則,實現(xiàn)端口轉發(fā)功能??梢允褂胕ptables -t nat -vnL查看。

bridge模式如下圖所示:

clipboard.png

Host模式

如果啟動容器的時候使用host模式,那么這個容器將不會獲得一個獨立的Network Namespace,而是和宿主機共用一個Network Namespace。容器將不會虛擬出自己的網(wǎng)卡,配置自己的IP等,而是使用宿主機的IP和端口。但是,容器的其他方面,如文件系統(tǒng)、進程列表等還是和宿主機隔離的。

Host模式如下圖所示:

clipboard.png

Container模式

這個模式指定新創(chuàng)建的容器和已經(jīng)存在的一個容器共享一個 Network Namespace,而不是和宿主機共享。新創(chuàng)建的容器不會創(chuàng)建自己的網(wǎng)卡,配置自己的 IP,而是和一個指定的容器共享 IP、端口范圍等。同樣,兩個容器除了網(wǎng)絡方面,其他的如文件系統(tǒng)、進程列表等還是隔離的。兩個容器的進程可以通過 lo 網(wǎng)卡設備通信。

Container模式示意圖:

clipboard.png

None模式

使用none模式,Docker容器擁有自己的Network Namespace,但是,并不為Docker容器進行任何網(wǎng)絡配置。也就是說,這個Docker容器沒有網(wǎng)卡、IP、路由等信息。需要我們自己為Docker容器添加網(wǎng)卡、配置IP等。

Node模式示意圖:

clipboard.png

更多請自行閱讀: http://www.a-site.cn/article/...

2018年8月31日 20:56