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

如何在本地主机上运行时让Docker容器互相交谈?

徐文斌
2023-03-14
问题内容

我有一个完全在MacBook本地运行的Webapp。

Webapp具有实现RESTful API的前端(Angular / Javascript)和后端(Python / Django)。

我已经对后端进行了Docker化,以使其完全独立于Docker容器并暴露端口8000。我将此端口本地映射到4026。

现在我需要对前端进行Docker化。但是,如果我在本地主机上运行了这两个docker容器,如何获取FE以将HTTP请求发送到BE?FE容器不会知道它之外的任何内容。对?

这就是我运行FE的方式:

$ http-server
Starting up http-server, serving ./
Available on:
  http://127.0.0.1:8080
  http://192.168.1.16:8080
Hit CTRL-C to stop the server

请提供解释如何实现此目标的参考。


问题答案:

今天的方法是Docker
Networking
,这是另一个简短的答案。

简短的版本是您可以运行docker network ls以获取网络列表。默认情况下,您应该有一个叫bridge。您可以创建一个新--net=bridge容器,也可以在创建容器时通过传递使用它。从那里,使用同一网络启动的容器可以通过暴露的端口相互通信。

如果您如上所述使用Docker
Compose
,它将在运行时为您创建一个桥接网络docker-compose up,其名称与项目文件夹相匹配并_default附加。Compose文件中定义的每个映像将自动在此网络中启动。

话虽如此,我想您的前端是一个只提供HTML / JS /
CSS的Web服务器,而这些页面访问后端服务。如果这是正确的话,那么在这种情况下,您实际上并不需要容器到容器的通信……因为连接都是从客户端系统发起的,所以两者都需要暴露给主机。



 类似资料:
  • 我的MacBook上有一个完全在本地运行的Webapp。 Webapp有一个前端(Angular/JavaScript)和一个实现RESTful API的后端(Python/Django)。 我已经对后端进行了Docker,使其完全独立于Docker容器中,并公开了端口8000。我将此端口映射到本地4026。 现在我需要对接前端。但是如果我有这两个docker容器在我的本地主机上运行,我如何让FE

  • 问题内容: 如何从Docker容器控制主机? 例如,如何执行复制到主机的bash脚本? 问题答案: 那真的取决于您需要该bash脚本执行的操作! 例如,如果bash脚本仅回显某些输出,则可以执行 另一种可能性是您希望bash脚本安装某些软件-例如要安装docker-compose的脚本。你可以做类似的事情 但是,此时,您真的必须深入了解脚本在做什么,以允许容器从容器内部对其主机授予特定权限。

  • 如何从docker容器控制主机? 例如,如何执行复制到主机的bash脚本?

  • 问题内容: 我建立了一个kafka docker容器并使用docker-compose对其进行编排。 打电话给我下面的putput: 我可以从docker容器内部运行生产者和使用者,但是不能在docker网络外部运行。 例如 : 我在本地主机上运行kafka生产者,出现以下错误: 这是我在github上的kafka docker示例,其中包含上述问题。 那么,有人遇到同样的问题并且可以以任何方式帮

  • 我在用“docker外面的docker”和jenkins运行一个容器。我的docker是: 所以所有从“jenkins容器”启动的容器都在主机中运行。 但是,当我试图在需要卷的作业中运行“jenkins容器”中的docker compose时,它采用的是来自主机的路径,而不是jenkins的路径。我是说,当我和docker合作时 它安装在主机的/var/jenkins_home/workspace

  • 我已经在我的主机虚拟机上安装了docker。现在想用vi创建一个文件。 但它向我展示了一个错误: