容器之間通信的主要方式
通過(guò)容器ip訪問(wèn)
容器重啟后,ip會(huì)發(fā)生變化。通過(guò)容器ip訪問(wèn)不是一個(gè)好的方案。
通過(guò)宿主機(jī)的ip:port訪問(wèn)
通過(guò)宿主機(jī)的ip:port訪問(wèn),只能依靠監(jiān)聽(tīng)在暴露出的端口的進(jìn)程來(lái)進(jìn)行有限的通信。
通過(guò)link建立連接(官方不推薦使用)
運(yùn)行容器時(shí),指定參數(shù)link,使得源容器與被鏈接的容器可以進(jìn)行相互通信,并且接受的容器可以獲得源容器的一些數(shù)據(jù),比如:環(huán)境變量。
# 源容器
docker run -itd --name container -e MYSQL_ROOT_PASSWORD=root mysql:5.7
#被鏈接容器
docker run -itd --name container --link test-mysql:mysql centos /bin/bash
#進(jìn)入容器
docker exec -it container /bin/bash
通過(guò) User-defined networks(推薦)
docker network來(lái)創(chuàng)建一個(gè)橋接網(wǎng)絡(luò),在docker run的時(shí)候?qū)⑷萜髦付ǖ叫聞?chuàng)建的橋接網(wǎng)絡(luò)中,這樣同一橋接網(wǎng)絡(luò)中的容器就可以通過(guò)互相訪問(wèn)。
docker run -it --network network --network-alias mysql -e MYSQL_ROOT_PASSWORD=123 mysql:5.7
啟動(dòng)被鏈接的容器
docker run -it --network test-network --network-alias centos centos /bin/bash
Docker宿主機(jī)與容器通信
首先是關(guān)于防火墻的問(wèn)題,可以查看本地自己的防火墻配置,可以關(guān)閉防火墻繼續(xù)下部操作
對(duì)于宿主機(jī)與容器無(wú)法通信的,因?yàn)槟J(rèn)的容器網(wǎng)絡(luò)是采用bridge的橋接形式,會(huì)在容器內(nèi)部開辟自己的網(wǎng)段,所以,你接下來(lái)需要用到的幾個(gè)命令如下:
ifconfig
查看下你本地的docker網(wǎng)絡(luò)配置
docker network inspect [你容器掛載的network]
查看你的容器網(wǎng)絡(luò)分段ip地址
route -n
查看你的本地容器地址



查看下你本地network網(wǎng)絡(luò)是不是與我的一致,如果你想修改你本地network網(wǎng)段,可以做下面操作
"default-address-pools" : [
{
"base" : "192.168.1.0/8",
"size" : 24
}
]
指定你的網(wǎng)段192.168.1.0/8,size:24,本地就會(huì)設(shè)置192.0.0.1的docker網(wǎng)段,記住修改后需要重新啟動(dòng)docker
systemctl restart docker
你可以將之前的network刪除,本地重新創(chuàng)建一個(gè)network再次查看你創(chuàng)建的network的網(wǎng)段地址,就會(huì)發(fā)生變化,關(guān)于Network網(wǎng)絡(luò)配置你可以參考這篇博客: Docker第四講 Docker network網(wǎng)絡(luò)模式講解
如果你有遇到其他的什么問(wèn)題,歡迎留言
如果本文檔無(wú)法幫助到你,可以參考這篇博客:文章來(lái)源:http://www.zghlxwxcb.cn/news/detail-505268.html
docker容器ping不通宿主機(jī)與外網(wǎng)問(wèn)題排查及解決文章來(lái)源地址http://www.zghlxwxcb.cn/news/detail-505268.html
到了這里,關(guān)于Docker第一講 Docker容器間/容器與宿主機(jī)ping不通解決的文章就介紹完了。如果您還想了解更多內(nèi)容,請(qǐng)?jiān)谟疑辖撬阉鱐OY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關(guān)文章,希望大家以后多多支持TOY模板網(wǎng)!