首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
社区首页 >问答首页 >对接容器之间的连接:需要放置网关而不是容器的名称,为什么?

对接容器之间的连接:需要放置网关而不是容器的名称,为什么?
EN

Stack Overflow用户
提问于 2020-01-30 09:12:08
回答 1查看 84关注 0票数 0

我正在为我自己测试一些东西,我遇到了问题:试图将一个节点表达式容器(App)连接到一个mongo容器(数据库),如果我连接到MongoCompose,但不能连接到nodeexpress的容器中,我就可以连接到mongo容器(数据库),如果我连接到localhost:27017,就不能用'mongodb://localhost:27017/dbtest'配置url连接节点表达式的容器来连接像这样的数据库。

因此,我查找了一些解决方案(比如this),并回答说,我看到的不是'mongodb://localhost:27017/dbtest',而是需要写我的容器'mongodb://mymongo:27017/dbtest'的名称,但是对我来说,这不起作用,只是收到了ECONNREFUSED错误。

容器在同一个网络中,这是我的dockerfile和docker-compose文件。

Dockerfile

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
#node 8.16.2
FROM node:8.16.2
COPY . /app
WORKDIR /app
RUN npm install
EXPOSE 3000
CMD ["npm","start"]

docker-compose.yaml

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: "3.7"
services:
   db:
    image: mongo
    ports:
        - 27017:27017
    networks:
        - testing
   app:
    build:
        context: .
        dockerfile: Dockerfile
    networks: 
        - testing
networks: 
    testing:

解决了这样的问题,比如mongodb://172.17.0.1:27017/dbtest,其中172.17.0.1是作为容器的网络的网关

有人能解释一下这种行为吗?如果是正确的话?平台Linux

EN

回答 1

Stack Overflow用户

发布于 2020-01-30 10:17:11

mymongo这个名字是从哪里来的?您已经在撰写文件中将mongodb服务的名称定义为db。所以使用连接字符串'mongodb://db:27017/dbtest'

代码语言:javascript
代码运行次数:0
运行
AI代码解释
复制
version: "3.7"
services:
   db:        ---------------> This is the name of your mongo service
    image: mongo
    ports:
        - 27017:27017
    networks:
        - testing
   app:
    build:
        context: .
        dockerfile: Dockerfile
    networks: 
        - testing
networks: 
    testing:
票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/59991144

复制
相关文章
云原生关乎文化,而不是容器
本文译自 Cloud-Native Is about Culture, Not Containers[1],文章洋洋洒洒上万字,作者总结了她见过的云原生失败的各种经验教训,还用生动的示例说明了什么不是云原生。译者是在周末闲暇时间仓促间翻译的,其中难免有不当之处,请读者指正。译者:宋净超(Jimmy Song)
xcbeyond
2021/04/02
5050
Spring Boot 容器选择 Undertow 而不是 Tomcat
Spring Boot内嵌容器支持Tomcat、Jetty、Undertow。为什么选择Undertow?
lyb-geek
2022/03/09
1.9K0
为什么构建容器需要 Namespace
Namespace 是 Linux 内核的一个特性,该特性可以实现在同一主机系统中,对进程 ID、主机名、用户 ID、文件名、网络和进程间通信等资源的隔离。Docker 利用 Linux 内核的 Namespace 特性,实现了每个容器的资源相互隔离,从而保证容器内部只能访问到自己 Namespace 的资源。
Se7en258
2021/05/18
1.5K0
为什么构建容器需要 Namespace
Kubernetes容器之间的通信
Kubernetes是一个容器化的解决方案。它提供了称为Pods的虚拟化运行环境,该环境容纳一个或多个容器以提供虚拟运行环境。Kubernetes的一个重要方面是Pod内的容器间通信。此外,管理Kubernetes网络的一个重要领域是在内部和外部转发容器端口,以确保Pod中的容器之间能够正确通信。为了管理此类通信,Kubernetes提供以下四种联网模型:
灵雀云
2021/02/25
1.6K0
Kubernetes容器之间的通信
kubernetes pod为什么需要pause容器?
当我们检查 kubernetes 集群的 node 节点时,我们使用 docker ps 查看时会发现一些名为 pause 的容器在节点上运行。
YP小站
2021/01/04
3.1K0
kubernetes pod为什么需要pause容器?
Docker 容器之间网络的通信
Docker在创建容器时有四种网络模式:bridge/host/container/none,bridge为默认不需要用–net去指定,其他三种模式需要在创建容器时使用–net去指定
jwangkun
2021/12/23
1.4K0
Docker 容器之间网络的通信
Docker启动容器命令(docker start 容器名称)
启动容器 #启动容器 docker start 容器名称 非root用户 #启动容器 sudo docker start 容器名称
用户9006224
2022/12/21
2.7K0
根据 PID 获取容器所在的 Pod 名称
在管理 Kubernetes 集群的过程中,我们经常会遇到这样一种情况:在某台节点上发现某个进程资源占用量很高,却又不知道是哪个容器里的进程。有没有办法可以根据 PID 快速找到 Pod 名称呢?
米开朗基杨
2020/07/17
6.9K0
『中级篇』 容器之间的Link(27)
PS:用户自定义的bridge 和 docker0 这个bridge他们之前的区别,docker0 如果通过名称想找到需要通过link,实际的项目中很少使用link,其实让大家知道link这个命令。
IT架构圈
2018/08/01
4570
『中级篇』 容器之间的Link(27)
Docker 容器连接
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过 -P 或 -p 参数来指定端口映射。
用户8647142
2021/07/27
6020
Docker 容器连接
这样我们就可以通过访问 127.0.0.1:5001(主机) 来访问容器的 5000 端口。这里面默认都是绑定TCP要绑定UDP如下命令:
Criss@陈磊
2019/10/31
1.3K0
Docker 容器连接
容器中可以运行一些网络应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射。
子润先生
2021/06/30
8880
servlet/tomcat等容器/springMVC之间的关系
Servlet是JavaEE规范的一种,主要是为了扩展Java作为Web服务的功能,统一接口。由其他内部厂商如tomcat,jetty内部实现web的功能。如一个http请求到来: 容器将请求封装为servlet中的HttpServletRequest对象,调用init(),service()等方法输出response,由容器包装为httpresponse返回给客户端的过程。
Monica2333
2020/06/19
1.2K0
『中级篇』 容器之间的Link(27)
PS:用户自定义的bridge 和 docker0 这个bridge他们之前的区别,docker0 如果通过名称想找到需要通过link,实际的项目中很少使用link,其实让大家知道link这个命令。
IT架构圈
2018/07/07
5140
『中级篇』 容器之间的Link(27)
需要学习的是编程,而不是编程语言
我们不仅是程序员,而且是个(与时俱进的)学习者。鲜见的是有多少人认为他们是在学习编程的呢。原翻译传送门is here
Jimmy_is_jimmy
2023/05/24
4640
Docker 容器的网络连接
通过ifconfig查看docker0的网络设备,docker守护进程就是通过docker0为docker的容器提供网络连接的各种服务。
程序员果果
2019/05/28
1.2K0
Docker多台物理主机之间的容器互联
Docker 默认的桥接网卡是 docker0。它只会在本机桥接所有的容器网卡,举例来说容器的虚拟网卡在主机上看一般叫做 veth* 而 Docker 只是把所有这些网卡桥接在一起,如下:
星哥玩云
2022/07/12
1.2K0
Docker多台物理主机之间的容器互联
快速学习Docker-容器之间的互联
版权声明:本文为博主原创文章,遵循 CC 4.0 BY-SA 版权协议,转载请附上原文出处链接和本声明。
cwl_java
2019/11/04
4660
Tomcat 是不是已经过气的容器
Tomcat 不但没有过时,Spring Boot 还给 Tomcat 第二春了。
HoneyMoose
2021/02/24
6580
Tomcat 是不是已经过气的容器
点击加载更多

相似问题

码头MySQL容器从网关地址传入连接而不是源容器

11

放置容器而不是AppBar

26

隐藏容器,而不是放置在容器上的文本

34

用容器名称而不是容器ID保存码头容器日志

13

postgresql对接容器在通过容器连接时拒绝连接

24
添加站长 进交流群

领取专属 10元无门槛券

AI混元助手 在线答疑

扫码加入开发者社群
关注 腾讯云开发者公众号

洞察 腾讯核心技术

剖析业界实践案例

扫码关注腾讯云开发者公众号
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档
查看详情【社区公告】 技术创作特训营有奖征文