一.容器的網(wǎng)絡(luò)通信:docker是通過(guò)端口映射萝嘁,將容器內(nèi)的服務(wù)提供給外部網(wǎng)絡(luò),以及通過(guò)容器互聯(lián)系統(tǒng)讓多個(gè)容器之間進(jìn)行通信
二.端口映射實(shí)現(xiàn)訪問(wèn)容器
1.從外部訪問(wèn)容器應(yīng)用
如果容器啟動(dòng)的時(shí)候不指定對(duì)應(yīng)的參數(shù)瘪贱,容器外部是無(wú)法訪問(wèn)到容器內(nèi)部的服務(wù)的纱控。
2.執(zhí)行命令:
a)使用參數(shù)-P(大寫(xiě)):
b)使用參數(shù)-p(小寫(xiě)):
支持的格式
a)ip地址:本地端口port:容器端口? ? ? ?-------->映射到指定地址的指定端口
b)ip地址::容器端口? ? ? ?------------->映射到指定地址的任意端口
c)本地端口port:容器端口portA? ? ? ?-------->指定本地固定端口port映射到容器的固定端口portA
注意:
可以使用參數(shù)-p指定多個(gè)端口的映射
可以使用udp標(biāo)記來(lái)指定upd端口:? -p 5000:5000:5000/udp
c.查看端口映射配置:docker port 容器名稱/容器ID
2.容器互聯(lián)實(shí)現(xiàn)容器通信
要求:
a.連接系統(tǒng)依據(jù)容器的名稱來(lái)執(zhí)行,所以容器必須要有自定義名稱
b.自定義名稱容易記菜秦,還能見(jiàn)名知意甜害。(使用參數(shù) --name? 容器名稱)
c.容器名稱也是唯一的,不能夠重復(fù)球昨。
1)操作流程:使用參數(shù)(--link)
2)查看容器信息:
3)docker通過(guò)兩種方式為容器公開(kāi)關(guān)聯(lián):
a.環(huán)境變量env(apache容器中記錄mysql容器信息):
b.hosts信息:
c.測(cè)試連通性:
1)首先保證兩個(gè)容器中安裝了ping和ifconfig命令:
apt-get install net-tools ? ?安裝ifconfig命令
apt-get?install iputils-ping ? ?安裝ping命令
2)ping:
可以看出現(xiàn)在是不通的尔店,解決方法就是:
1.直接關(guān)掉宿主主機(jī)的iptables: servcie iptables stop
2.添加下面的規(guī)則就可以了:
? ?iptables -I -s 172.17.0.0/16 FORWARD -j ACCEPT