【问题标题】:Add docker host into docker network将 docker 主机添加到 docker 网络
【发布时间】:2018-08-28 17:10:01
【问题描述】:

第一步:创建一个docker网络

docker network create my-work-network

第二步:添加一些容器到这个网络中

docker run ... --name my-work-pg --network my-work-network image1
docker run ... --name my-work-redis --network my-work-network image2 

我的问题是:

当前,在my-work-pg,我可以ping my-work-redis,反之亦然。 但是,在我的 docker 主机中,我必须解析两个容器 IP 地址和 访问这些容器,是否存在使我的 docker 主机可以JOIN IN 这个虚拟网络的解决方案?

目的

为了开发方便,我想访问所有启动的容器 直接在这个网络中,就好像 docker host 是一个容器一样。例如我可以使用以下配置访问 postgresql 数据库

host: my-work-pg     # pg container host name
port: 5432

但是,这并不是我想要的。

【问题讨论】:

  • 只需将容器端口映射到您的 docker 主机:docker run -p <host_port>:<container_port>。之后您可以使用localhost:port 访问服务。
  • @zw963:只是为了理解你的目的,当你说“我想直接访问这个网络中所有启动的容器,就好像 docker 主机是一个容器一样”,默认情况下,docker 容器可以从主机访问.您还在寻找什么?

标签: docker docker-networking


【解决方案1】:

为了您的目的,最好的方法是使用链接选项 --link 并传递 docker_image:name_to_binding,例如将 redis 与 pg 与您的配置链接起来

docker run ... --name my-work-redis --link my-work-pg image2

在这种情况下,它与 pg 容器的名称相同,它用作 redis 容器中的内部名称,不需要 my-work-pg:name-pg-internal-redis 之类的东西

【讨论】:

  • 我想要的是从主机 ping docker 客户端,有支持这个的链接吗?而且,docker 团队似乎不再喜欢 --link 了,并将在未来的版本中删除它
  • 是的,你是对的,我打开documentation of docker about legacy links 并看到宣布删除该功能的红色字母。我建议使用 ip 或 ip6 选项在每个容器中使用固定 IP 地址,docker 创建的桥接网络允许查看该 IP
【解决方案2】:

我可以向您保证,没有这样的方法可以将 docker daemon host 添加到用户定义的网络 my-work-network
就像你上面写的那样,你的目的是为了开发方便。所以我不认为你的配置host: my-work-pg 是必不可少的。正如@Sebastian 提到的,您可以使用-p 标志映射容器中的应用程序端口和主机上的端口。然后您可以通过localhost:5432 访问postgres 服务。 我建议您阅读[docker.com][1] 上的文档。 希望对你有帮助~

【讨论】:

    猜你喜欢
    • 2023-03-22
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2017-02-27
    • 2021-04-14
    • 2017-09-12
    • 1970-01-01
    相关资源
    最近更新 更多