宿主機怎樣與虛機里的docker容器通信?
一個非常好的問題。使用Docker時,宿主機和Docker容器之間、Docker容器和Docker容器之間,都需要進(jìn)行服務(wù)間通信。
一,宿主機和Docker容器之間Docker啟動容器時,指定服務(wù)端口,比如啟動Redis時,端口為6379,這時如果需要訪問Redis服務(wù),就使用ip地址:端口,或者直接使用localhost:6379
在需要直接登錄到容器時,可以使用docker命令,比如:
docker exec -it data_redis_1 bash其中data_redis_1時容器名稱,可以通過docker ps查看當(dāng)前容器信息:
二,Docker容器之間Docker容器快捷高效部署應(yīng)用,資源編排定義和運行多個容器,通過docker-compose.yml配置文件聲明各個服務(wù),作為一個整體來創(chuàng)建和啟動。
那么Docker容器之間怎么通信呢?顯然是不應(yīng)該使用IP地址的,應(yīng)該使用和配置hostname,如果在不同子網(wǎng),就增加networks信息。
1,配置hostname
以Redis為例,Redis服務(wù)被API服務(wù)調(diào)用,為Redis配置hostname: cache
2,引用hostname
API服務(wù)在application.yml中配置Redis連接信息時,使用hostname指定服務(wù)地址:
3,不同子網(wǎng)間配置networks信息
實際使用中經(jīng)常將服務(wù)按照不同類別部署在不同子網(wǎng)中,這時需要指定networks信息。以數(shù)據(jù)層和接口層為例:
1)部署Redis時,配置networks為data,橋接模式
2)部署API服務(wù)時,聲明networks信息,data是external外部子網(wǎng)
我是工作多年的Web應(yīng)用架構(gòu)師,陸續(xù)發(fā)布關(guān)于軟件開發(fā)方面的文章,歡迎關(guān)注我,了解更多IT專業(yè)知識。