欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker實(shí)現(xiàn)容器之間通信的多種方式

 更新時(shí)間:2025年06月20日 08:36:40   作者:思靜魚  
在 Docker 中,實(shí)現(xiàn)容器之間的通信有多種方式,核心在于網(wǎng)絡(luò)配置,下面我從 基礎(chǔ)原理、常見方式、最佳實(shí)踐、以及 docker-compose 方式 全面講解,需要的朋友可以參考下

一、Docker 容器間通信的本質(zhì)是什么?

容器之間通信依賴 Docker 網(wǎng)絡(luò)(Network),默認(rèn)有幾種網(wǎng)絡(luò)類型:

類型描述
bridge默認(rèn)網(wǎng)絡(luò),同一網(wǎng)橋內(nèi)容器可以通過容器名通信
host共享宿主機(jī)網(wǎng)絡(luò),無隔離(無端口映射)
none容器無網(wǎng)絡(luò),僅用于極端隔離場(chǎng)景
overlay用于 Docker Swarm 集群通信

二、常用容器通信方式

1. **橋接網(wǎng)絡(luò)(默認(rèn))**下的通信

方法一:通過容器名稱訪問

默認(rèn)容器在 bridge 網(wǎng)絡(luò)中可以通過 名稱解析容器名 → IP 進(jìn)行通信:

docker network create mynet
docker run -dit --name container-a --network mynet alpine sh
docker run -dit --name container-b --network mynet alpine sh

然后進(jìn)入 container-b,ping container-a 即可:

ping container-a

可用于微服務(wù)中服務(wù)間調(diào)用,如:

http://container-a:8080/api/...

方法二:共享同一網(wǎng)絡(luò)(如 docker-compose 自動(dòng)創(chuàng)建)

version: '3'
services:
  web:
    image: nginx
  app:
    image: my-java-app
    depends_on:
      - web
  • web 的容器名稱就是 web
  • app 中可通過 web:80 與其通信,無需指定 IP

2. host 網(wǎng)絡(luò)模式下通信

容器共享宿主機(jī)網(wǎng)絡(luò),無端口映射限制,適合需要 UDP、低延遲通信:

docker run --network host my-app

注意:

  • 所有容器共享端口空間,避免端口沖突
  • 容器可以通過 localhost 訪問宿主其他服務(wù)

3. 端口 暴露 + 宿主機(jī) IP 通信(最通用但低效)

每個(gè)容器通過 -p 映射端口 暴露到宿主機(jī):

docker run -p 8080:8080 --name web my-web
docker run -p 8081:8081 --name app my-app

此時(shí)容器間不能直接通信,只能通過宿主 IP 和端口:

curl http://host-ip:8080/

三、Docker 網(wǎng)絡(luò)命令速查

命令說明
docker network ls查看所有網(wǎng)絡(luò)
docker network inspect mynet查看某網(wǎng)絡(luò)下容器信息(IP等)
docker network create mynet創(chuàng)建自定義網(wǎng)絡(luò)
docker network connect把容器加入到一個(gè)網(wǎng)絡(luò)
docker network disconnect移除容器的網(wǎng)絡(luò)連接

四、docker-compose 中容器通信最佳實(shí)踐

version: '3'
services:
  mysql:
    image: mysql
    environment:
      MYSQL_ROOT_PASSWORD: 123456
  app:
    image: my-java-app
    depends_on:
      - mysql
    environment:
      DB_HOST: mysql
  • app 可以用 mysql:3306 與數(shù)據(jù)庫(kù)通信
  • 不用寫 IP,容器名即服務(wù)名,Compose 默認(rèn)建立 bridge 網(wǎng)絡(luò)

五、最佳實(shí)踐小結(jié)

場(chǎng)景推薦方案
同機(jī)通信自定義 bridge 網(wǎng)絡(luò),容器名互通
簡(jiǎn)化開發(fā)用 docker-compose 管理服務(wù)
性能要求高使用 --network host
集群通信使用 overlay 網(wǎng)絡(luò)(Docker Swarm)

補(bǔ)充:容器 DNS 是怎么解析的?

Docker 默認(rèn)為每個(gè)網(wǎng)絡(luò)分配一個(gè) DNS 服務(wù),容器名在網(wǎng)絡(luò)中解析為容器 IP:

# 容器內(nèi)
nslookup web

你會(huì)看到:web 自動(dòng)解析成 IP 地址。

總結(jié)

通信方式說明與特點(diǎn)
通過容器名通信推薦,自定義網(wǎng)絡(luò)或 docker-compose 默認(rèn)支持
宿主機(jī) IP + 映射端口最通用但性能差
host 網(wǎng)絡(luò)通信高性能但需管理端口沖突
overlay 網(wǎng)絡(luò)通信多主機(jī)通信(Swarm/集群用)

以上就是Docker實(shí)現(xiàn)容器之間通信的多種方式的詳細(xì)內(nèi)容,更多關(guān)于Docker容器間通信的資料請(qǐng)關(guān)注腳本之家其它相關(guān)文章!

相關(guān)文章

  • docker 搭建hadoop以及hbase集群詳解

    docker 搭建hadoop以及hbase集群詳解

    本篇文章主要介紹了docker 搭建hadoop以及hbase集群詳解,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2017-10-10
  • Docker?Windows最新版(4.17.x)修改鏡像存儲(chǔ)路徑的詳細(xì)步驟

    Docker?Windows最新版(4.17.x)修改鏡像存儲(chǔ)路徑的詳細(xì)步驟

    這篇文章主要介紹了Docker?WIndows最新版(4.17.x)修改鏡像存儲(chǔ)路徑的步驟,本文給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2023-03-03
  • Docker Compose安裝本地maven方式

    Docker Compose安裝本地maven方式

    本文介紹了如何使用Docker Compose安裝Maven,并提供了腳本和配置路徑,通過運(yùn)行Docker Compose,可以查看安裝結(jié)果,進(jìn)入容器后,可以查看Maven版本
    2024-12-12
  • Spring?Boot?分層打包?Docker?鏡像實(shí)踐及分析(推薦)

    Spring?Boot?分層打包?Docker?鏡像實(shí)踐及分析(推薦)

    這篇文章主要介紹了Spring?Boot?分層打包?Docker?鏡像實(shí)踐及分析,本文通過圖文并茂的形式實(shí)例代碼相結(jié)合給大家介紹的非常詳細(xì),需要的朋友可以參考下
    2021-12-12
  • docker如何安裝mysql

    docker如何安裝mysql

    這篇文章主要介紹了docker如何安裝mysql,總結(jié)了安裝心得,幫助大家更好的使用docker鏡像,感興趣的朋友可以了解下
    2020-10-10
  • Docker容器compose容器集群的快速編排方式

    Docker容器compose容器集群的快速編排方式

    這篇文章主要介紹了Docker容器compose容器集群的快速編排方式,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-11-11
  • Docker?部署?Minio?對(duì)象存儲(chǔ)服務(wù)器的過程詳解

    Docker?部署?Minio?對(duì)象存儲(chǔ)服務(wù)器的過程詳解

    Minio是一個(gè)輕量級(jí)的應(yīng)用程序,可以在各種環(huán)境中運(yùn)行,包括公共云、私有云和混合云,這篇文章主要介紹了Docker?部署?Minio?對(duì)象存儲(chǔ)服務(wù)器的過程詳解,需要的朋友可以參考下
    2024-07-07
  • 在Docker Compose中獲取最新鏡像的多種方法總結(jié)

    在Docker Compose中獲取最新鏡像的多種方法總結(jié)

    Docker 鏡像是 Docker 容器的基礎(chǔ),鏡像包含了應(yīng)用程序所需的所有文件和依賴,Docker-Compose 默認(rèn)不會(huì)自動(dòng)拉取最新的鏡像版本,這可能會(huì)導(dǎo)致使用過時(shí)的鏡像,從而錯(cuò)過重要的更新,為了確保 Docker-Compose 始終使用最新的鏡像,我們可以采用多種方法,以下將詳細(xì)介紹這些方法
    2024-08-08
  • Docker容器和本機(jī)之間的文件傳輸方法

    Docker容器和本機(jī)之間的文件傳輸方法

    這篇文章主要介紹了Docker容器和本機(jī)之間的文件傳輸方法,文中通過示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧
    2019-03-03
  • docker compose安裝es+kibana 8.12.2的詳細(xì)過程

    docker compose安裝es+kibana 8.12.2的詳細(xì)過程

    因云平臺(tái)需要改造,es7升級(jí)為es8,所以記錄一下,es8需要開啟ssl認(rèn)證,需要配置證書,全本帶你用docker安裝,便于后面es8的學(xué)習(xí),這篇文章主要介紹了docker compose安裝es+kibana 8.12.2的詳細(xì)過程,感興趣的朋友跟隨小編一起看看吧
    2024-05-05

最新評(píng)論