【发布时间】:2021-12-10 17:51:49
【问题描述】:
我正在测试同一网络“myNetwork”中的两个容器(tomcat 和busybox)是否能够相互通信。
我按照以下步骤操作:
-
创建一个网络,“myNetwork”
docker network create -d bridge myNetwork -
在“myNetwork”中运行一个“myTomcat”容器
docker run -it --name myTomcat --net=myNetwork tomcat -
在与“myTomcat”网络相同的网络中运行“busybox”容器。即“我的网络”
docker run -it --net=container:myTomcat busybox -
使用 wget 命令测试是否可以从busybox容器访问tomcat容器
docker container exec -it {busybox_container_id}/# wget localhost:8080
我在这里遇到错误wget: server returned error: HTTP/1.1 404
我想知道为什么我无法从busybox 容器连接到tomcat 容器,即使我在同一个网络中配置了两个容器。 所以我通过做检查:
docker network inspect myNetwork
[
{
"Name": "myNetwork",
...
"Containers": {
"43ba4d7ae27753f8085f5697cf6afc4eb872dbdbd2cf18138e3c6e3f90d54d15":{
"Name": "myTomcat",
"EndpointID":"03a98...",
...
"IPv4Address": "172.20.0.2/16",
"IPv6Address": ""
}
}
]
docker inspect {tomcat_container_id}
[
...
"Networks": {
"myNetwork": {
"NetworkID": "54bf...",
...
"Gateway": "172.20.0.1",
"IPAddress": "172.20.0.2"
...
}
...
]
docker inspect {busybox_container_id}
[
...
"NetworkSettings": {
"Bridge": "",
...
"Networks": {}
}
...
]
tomcat 似乎在“myNetwork”中,但检查busybox 容器似乎没有显示任何网络信息。感谢您的帮助
【问题讨论】:
-
如何从
busybox连接到tomcat?通过名称还是 IP? -
如果您收到 HTTP 404 错误,则说明您已成功连接,问题可能是您尚未将任何
.war文件加载到 Tomcat 中。话虽如此,--net=container:...构造确实不寻常;为什么要进行这种特殊设置? -
@DavidMaze 你是对的。在 tomcat 容器的 $CATALINA_HOME/webapps/ROOT/index.html 中创建 index.html 后,我能够从 busybox 容器中“wget localhost:8080”并下载 index.html 文件。我正在尝试
--net=container:...命令只是为了学习目的,而我正在学习 docker 中的一些基本网络命令。谢谢。 -
@Saeed 我的测试用例假设
busybox和tomcat容器在同一个网络中。因此,您可以通过简单的localhost:8080或myTomcat:8080连接到正在运行的tomcat服务器,正如 AymDev 回答的那样。 -
此外,从 Tomcat 版本 7 开始,默认的 tomcat webapps 目录已移至 webapps.dist,防止在 tomcat 实例启动时立即加载 tomcat 默认页面。 stackoverflow.com/questions/61972819/…