docker - 使用 Docker 在 Jelastic 中进行端口转发

标签 docker dockerfile jelastic

我有一个简单的应用程序,它在端口 4567 上有 rest api,并在我的 jelastic 云中的 docker 容器中运行它。
现在我想将端口 4567 转发到外部世界。当我在本地运行 docker 时,我可以这样做: docker run -d -p 4567:4567 -ti myapp/bin/bash
但是我怎么能在没有外部IP的jelastic中做到这一点?我也尝试使用 jelastic 端点​​,但端口不可用。
还找到了有关 jelastic 文档的一些信息:“如果您的 Docker 容器没有附加外部 IP,Jelastic 会执行自动端口重定向。
这意味着如果应用程序监听 TCP 级别的自定义端口,Jelastic 将尝试自动检测它并将所有传入请求转发到该端口号。
因此,在大多数情况下,您的 dockerized 应用程序或服务将在创建后立即在相应节点域下的 Internet 上可用。”
要构建 docker 镜像,我使用 Dockerfile,它具有“EXPOSE 4567”字段。

最佳答案

@卡特琳娜,

注意 Jelastic 不需要暴露端口,因为它使用 PCS container-based virtualization ,与原生 Docker 容器的实现相比,它在技术上更先进:它内置了对自然虚拟主机路由网络适配器的支持。

默认情况下,Jelastic 会自动检测端口,这些端口预定义为由应用程序在适当的 Docker 镜像设置中监听,并应用所需的重定向以确保容器在部署后立即可访问。

Port forwarding in Jelastic with Docker

让我们解释一下哪些端口正在监听Shared Load Balancer (SLB)并且可以转发到容器:

80 -> HTTP

8080 -> HTTP

8686 -> HTTP

8443 -> SSL

4848 (glassfish 管理员)-> SSL

4949 (野蝇管理员)-> HTTP

7979 (导入/导出功能)-> SSL

如果您想指定另一个端口而不是通过自动重定向功能选择,您可以通过指定 来完成。 JELASTIC_EXPOSE docker variable在环境设置wizard指定所需的端口。

JELASTIC_EXPOSE 应使用变量,尽可能使用以下值:

  • 0 或 DISABLED 或 FALSE - 禁用自动重定向
  • 中的一个数字1-65535 range - 定义设置相应重定向所需的端口

  • 此外,您可以通过 endpoint 映射所需的专用端口。 (可以通过 Shared LB 访问)并将您的服务绑定(bind)到接收到的地址和共享端口。

    关于docker - 使用 Docker 在 Jelastic 中进行端口转发,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/42367870/

    相关文章:

    linux - Docker 未绑定(bind) DNS 服务器 : How to launch as service

    docker - 如何使用jenkins-api将参数传递到我的Dockerfile中

    docker - 两个docker容器无法通信

    java - Soap WebService 到 Soap Webservice 调用

    Jelastic 和 Jetty 9 上的 SSL

    java - Docker 启动非常慢并且使用 docker compose 收到异常

    linux - Docker Devmapper 空间问题 - 增加大小

    docker - System.Net.Http.HttpRequestException : Connection refused

    linux - Dockerfile 中的 RUN 命令有什么作用?