Docker-从主机连接到容器

时间:2018-09-13 12:26:58

标签: docker jenkins networking continuous-integration gitlab

我正在将Docker for Windows与创建的桥接网络一起使用:

  • "bridge":"none"(daemon.json)
  • docker network create --subnet 192.168.23.1/24 --gateway 192.168.23.1 --driver bridge my-network

...以及带有詹金斯图像的容器。

当我配置Jenkins(容器)和Gitlab(“互联网”)之间的连接时,一切正常。但是,当我在Gitlab中创建Webhook时,必须输入Jenkins的URL。我尝试使用localhost并从 IPAddress 属性获得IP:

"Networks": {
    "my-network": {
        "IPAMConfig": null,
        "Links": null,
        "Aliases": [
            "jenkins",
            "dff5dcb7c95a"
        ],
        "NetworkID": "xxx",
        "EndpointID": "yyy",
        "Gateway": "192.168.23.1",
        "IPAddress": "192.168.23.2",
        "IPPrefixLen": 24,
        "IPv6Gateway": "",
        "GlobalIPv6Address": "",
        "GlobalIPv6PrefixLen": 0,
        "MacAddress": "zzz",
        "DriverOpts": null
    }
}

..,但两个选项均无效。

问题:如何确定正确的URL?

如何从主机连接到我的容器?这是正确的方法吗?我应该知道哪些问题来解决将来出现的以下问题?

感谢您的帮助:)

1 个答案:

答案 0 :(得分:1)

如果您还在Docker容器中运行Gitlab实例,则只需将Gitlab容器添加到同一Docker网络中。

如果您的Gitlab实例确实在Internet中,则无法使用localhost或任何本地IP地址解决此问题。您需要:

  • 找到您的公共IP地址,如果您有动态IP,也许可以使用dynDNS获取修复域
  • 在路由器上打开端口并配置防火墙
  • 在本地Windows防火墙上打开端口
  • 需要找出詹金斯在哪个端口上等待来自GitLab的网络钩子
  • 使用以下命令将此端口映射到docker-container --p <docker-internal-port>:<docker-external-port>

如果您要提供有关网络基础设施的更多信息,答案可能会更清楚。