首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >问答首页 >如何在连接到容器时使用主机网络?

如何在连接到容器时使用主机网络?
EN

Stack Overflow用户
提问于 2016-02-26 19:21:58
回答 3查看 15.8K关注 0票数 15

在我的docker-compose中:

代码语言:javascript
复制
laravel:
    image: trackware
    links:
        - postgis:postgis
    ports:
        - "80:80"
        - "3306:3306"
        - "443:443"
        - "220:22"
        - "8000:8000"
    net: "host"
    restart:  always
    volumes:
        - C:/H/repositories/pubnub:/share
    container_name: laravel

postgis:
    image: mdillon/postgis
    env_file: .postgis_env
    ports:
        - "9090:9000"
        - "54320:5432"
    container_name: postgis

如果我运行docker-compose up -d,我会得到这个错误:

代码语言:javascript
复制
Conflicting options: host type networking can't be used with links. This would result in undefined behavior

那么,如何在链接到postgis容器时使用net: "host"postgis容器需要运行pubnub客户端,这将需要高性能的网络来进行实时消息处理,还需要链接到laravel容器来访问数据库。

那么,有什么建议吗?我使用的是docker 1.10.2

EN

回答 3

Stack Overflow用户

回答已采纳

发布于 2016-02-26 20:26:47

由于您将postgis端口公开给主机,因此您可以跳过链接并通过localhost:9000连接到它。我相信这是可行的,因为Laravel应用程序驻留在主机网络上,它们将共享这些端口。

票数 8
EN

Stack Overflow用户

发布于 2020-01-20 20:58:28

我们之所以使用link关键字,是因为docker可以在内部进行主机名解析,以便两个完全不同的容器可以相互通信。在您的例子中,如果您没有使用host network并使用link关键字,那么docker将在内部创建一个具有每个容器名称的主机名,以便两个容器可以相互通信。当您使用"host“模式时,network意味着您告诉docker我将使用"hosts”底层网络,因此只需公开本地主机上的端口,我的容器就可以相互通信。

票数 1
EN

Stack Overflow用户

发布于 2016-02-26 20:29:57

我不知道为什么但是..。你不应该使用“主机”驱动程序和端口映射,至少你不会得到预期的结果。在类似"220: 22“的情况下,您将获得映射到主机的22个端口。

据我所知,"Net“已经过时了,请改用"network_mode”。另外,我建议您将docker-compose更新到最新版本,现在是1.6.2。以前的版本存在一些网络问题。

可能是你可以使用"bridge“驱动?在你的情况下,我看不到它不能解决的问题。

票数 0
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35650395

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档