docker 网桥截图


汇总:docker 容器网络汇总
进入tomcat容器02后,可以访问tomcat容器01地址端口号
命令如下:curl http://172.18.0.4:8080,该端口号是容器的端口号,而不是映射的端口号
当您在 Docker 内部从一个 Tomcat 容器访问另一个 Tomcat 容器时,应该使用目标容器实际监听的端口号(即容器内部的端口号),而不是主机映射的端口号。
具体规则
-
容器间直接通信:
-
使用目标容器的 内部端口号(通常是8080)
-
例如:
curl http://另一个容器IP:8080
-
-
从主机访问容器:
-
使用 映射后的端口号(如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
正确访问方式:
-
在tomcat1容器内部访问tomcat2:
docker exec -it tomcat1 curl http://tomcat2:8080-
使用容器名
tomcat2和容器内部端口8080
-
-
在主机上访问tomcat2:
curl http://localhost:8089-
使用主机端口
8089
-
关键概念
-
容器网络:
-
默认情况下,Docker容器会加入同一个bridge网络,可以通过容器名互相发现
-
-
端口映射:
-
-p 主机端口:容器端口只影响主机与容器的通信 -
容器间通信不受端口映射影响
-
-
服务发现:
-
Docker内置DNS服务允许通过容器名访问其他容器
-
也可以使用
docker network inspect bridge查看容器IP
-
验证方法
-
查看容器IP:
docker inspect -f '{{range.NetworkSettings.Networks}}{{.IPAddress}}{{end}}' tomcat2 -
测试连接:
docker exec -it tomcat1 ping tomcat2 docker exec -it tomcat1 curl -v http://tomcat2:8080
记住:容器间通信永远使用容器实际监听的端口号,端口映射(-p参数)只影响主机与容器的通信。
郭慕荣博客园

浙公网安备 33010602011771号