当前位置: 首页 > 面试题库 >

从另一个Docker容器内部在Docker容器中运行的访问服务

冀胤运
2023-03-14
问题内容

目前,我在需要连接到camunda的docker容器内运行一个node.js应用程序,该容器在另一个容器中运行。

我使用以下命令启动容器

docker run -d --restart=always --name camunda -p 8000:8080 camunda/camunda-bpm-platform:tomcat-7.4.0
docker run -d --name app -p 3000:3000 app

这两个应用程序现在都在运行,我可以通过在端口8000上导航到主机的IP来访问camunda,运行wget http://localhost:8000 -q -O -还会返回camunda页面。使用docker exec -it app sh和键入我的应用程序容器时wget http://localhost:8000 -q -O -,我无法访问camunda。相反,我得到以下错误:

 wget: can't connect to remote host (127.0.0.1): Connection refused

当我使用将我的应用程序容器链接到camunda容器--link camunda:camunda并输入wget http://camunda:8000 -q -O -我的应用程序容器时,出现以下错误:

wget: can't connect to remote host (172.17.0.4): Connection refused`

我已经看到了这个选项,所以我使用来启动我的应用程序容器--add-hostcamunda:my_hosts_ip并再次尝试wget,结果是:

 wget: can't connect to remote host (149.210.227.191): Operation timed out

wget http://149.210.227.191:5001 -q -O -但是,在主机上运行时,我会立即得到正确的响应。

理想情况下,我只想启动我的应用程序容器,而无需以任何方式提供外部IP,让应用程序容器仅通过本地主机或将camunda容器链接到我的应用程序容器来使用camunda服务。实现这一目标的最简单方法是什么?


问题答案:

以下是原始答案。请注意,链接已被弃用,建议的替代方法是网络。对此问题的答案进行了解释:docker-
compose:网络与链接之间的区别

-将--link camunda:camunda选项用于您的应用容器。然后,您可以通过访问camunda http://camunda:8080/...。链接选项/etc/hosts使用camunda容器的IP地址将一个条目添加到app容器的文件中。这也意味着,如果重新启动camunda容器,则必须重新启动应用程序容器。



 类似资料:
  • 问题内容: 我基于两个不同的图像创建了两个docker容器。一个数据库,另一个用于网络服务器。这两个容器都在我的Mac OS X上运行。 我可以从主机访问数据库容器,也可以从主机访问Web服务器。 但是,如何从Web服务器访问数据库连接? 我启动数据库容器的方式是 我开始了wls容器作为 我可以通过连接到主机上的数据库 我可以以以下方式访问主机上的wls: 问题答案: 最简单的方法是使用–link

  • 我基于两个不同的映像创建了两个docker容器。一个是db,另一个是WebServer。这两个容器都在我的mac OSX上运行。 我可以从主机访问db容器,也可以从主机访问webserver。 我可以访问主机上的wls作为

  • 问题内容: 我正在尝试为将我的应用程序容器连接到postgres容器提供一个便携式解决方案。“便携式”是指我可以给用户两个命令,每个容器一个,它们将始终协同工作。 我的本地PC上运行着一个postgres docker容器,我这样运行它, 我可以使用address从python flask应用程序访问它。 我也将python应用程序也放置在docker容器中,但无法连接到postgres容器。 地

  • 我有一个Docker的图像火花Jupyter(https://github.com/zipfian/spark-install) 我为hadoop准备了另一个docker图片。(https://github.com/kiwenlau/hadoop-cluster-docker) 我在Ubuntu中运行上述两张图片中的两个容器。对于第一个容器:我能够成功地启动jupyter并运行python代码:

  • 我们有一个公开REST API的现有java应用程序。当它收到超文本传输协议请求时,它使用Runtime.getRuntime(). exe启动另一个java进程。 我们正在将此应用程序迁移到docker,我们希望将这些服务、一个容器中的REST应用程序和另一个容器中的其他组件分开。 有没有办法,REST应用程序可以在另一个docker容器中启动另一个应用程序?

  • 我有两个Docker容器在同一个网络中运行,我希望其中一个通过spring Webclient调用另一个。我确信他们都在同一个网络中- “finishConnect(…)失败:连接被拒绝:附件加载程序秒/172.21.0.5:80;嵌套异常为io。内蒂。频道AbstractChannel$AnnotatedConnect异常:finishConnect(…)失败:连接被拒绝:附件加载程序秒/172