docker 网桥截图

汇总:docker 容器网络汇总

进入tomcat容器02后,可以访问tomcat容器01地址端口号

命令如下:curl http://172.18.0.4:8080,该端口号是容器的端口号,而不是映射的端口号

当您在 Docker 内部从一个 Tomcat 容器访问另一个 Tomcat 容器时,应该使用目标容器实际监听的端口号(即容器内部的端口号),而不是主机映射的端口号。

具体规则

  1. 容器间直接通信:

    • 使用目标容器的 内部端口号(通常是8080)

    • 例如:curl http://另一个容器IP:8080

  2. 从主机访问容器:

    • 使用 映射后的端口号(如8088)

    • 例如:curl http://localhost:8088

示例场景

假设您有以下两个容器:

# 容器1 - 映射主机8088到容器8080
docker run -d --name tomcat1 -p 8088:8080 tomcat:8

# 容器2 - 映射主机8089到容器8080 
docker run -d --name tomcat2 -p 8089:8080 tomcat:8

正确访问方式:

  1. 在tomcat1容器内部访问tomcat2:

    docker exec -it tomcat1 curl http://tomcat2:8080
    • 使用容器名tomcat2和容器内部端口8080

  2. 在主机上访问tomcat2:

    curl http://localhost:8089
    • 使用主机端口8089

关键概念

  1. 容器网络:

    • 默认情况下,Docker容器会加入同一个bridge网络,可以通过容器名互相发现

  2. 端口映射:

    • -p 主机端口:容器端口 只影响主机与容器的通信

    • 容器间通信不受端口映射影响

  3. 服务发现:

    • Docker内置DNS服务允许通过容器名访问其他容器

    • 也可以使用docker network inspect bridge查看容器IP

验证方法

  1. 查看容器IP:

    docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' tomcat2
  2. 测试连接:

    docker exec -it tomcat1 ping tomcat2
    docker exec -it tomcat1 curl -v http://tomcat2:8080

记住:容器间通信永远使用容器实际监听的端口号,端口映射(-p参数)只影响主机与容器的通信。

 

posted @ 2025-06-18 10:02  郭慕荣  阅读(29)  评论(0)    收藏  举报