docker - 无法访问具有 Network_Mode 主机的 Tomcat Docker 容器

标签 docker tomcat networking

我正在使用 docker 版本的 Ubuntu 16.04 LTS

Docker version 18.03.1-ce, build 9ee9f40

当我用网络模式主机启动Tomcat服务器时,我无法访问它。

$ sudo docker run --rm -d --network host -p 8888:8080 tomcat:8.0

$ curl localhost:8888
curl: (7) Failed to connect to localhost port 8888: Connection refused

当我以默认桥接网络模式启动它时,一切似乎都很好。

$ sudo docker run --rm -d -p 8888:8080 tomcat:8.0
$ curl localhost:8888
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/8.0.53</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />

问题似乎与 Tomcat 镜像有关。同样的原则也适用于 nginx 图像。你可以看看: https://docs.docker.com/network/network-tutorial-host/#goal我试过了。它适用于 nginx 图像。

我找不到与此相关的任何文档。您知道 Tomcat 容器无法与主机联网的原因吗?

最佳答案

如果您在 host 网络模式下运行,则端口映射不会执行任何操作。您所说的是“使用主机的网络堆栈运行此容器”。所以需要在tomcat运行的端口上连接tomcat,不能转发。在上面的示例中,这将是 8080

$ sudo docker run --rm -d --network host tomcat:8.0
$ curl localhost:8080
<!DOCTYPE html>
<html lang="en">
    <head>
        <meta charset="UTF-8" />
        <title>Apache Tomcat/8.0.53</title>
        <link href="favicon.ico" rel="icon" type="image/x-icon" />
        <link href="favicon.ico" rel="shortcut icon" type="image/x-icon" />
        <link href="tomcat.css" rel="stylesheet" type="text/css" />

nginx 示例工作正常,因为它们连接到端口 80 并且这是运行 nginx 的端口。在该示例中,他们没有进行任何转发。

关于docker - 无法访问具有 Network_Mode 主机的 Tomcat Docker 容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/51469175/

相关文章:

docker - "naming to docker.io",解释和预防?

mysql - Maven - Tomcat 7 - Hibernate MySQL : Broken Pipe Exception when doing mvn deploy

java - 支持 IPv6 需要进行哪些更改

c - 尽管终止了客户端,write() 仍返回正确的字节数

java - 停止线程等待网络 Activity 的正确方法是什么?

docker - 分配 docker 问题

docker-compose 卷未安装到主机目录

docker - 如何使用 Docker 引擎 SDK 和 Golang 运行 docker 安装卷

tomcat - tomcat知道haproxy是代理服务器吗?

Java pcap 解析器解析为 ByteBuffer