Docker - 从HOST连接到容器

问题描述 投票:1回答:1

我正在使用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图像的容器。

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

如何从HOST连接到我的容器?这是正确的方法吗?以后我应该知道哪些问题可以解决以下问题?

感谢帮助 :)

docker jenkins networking continuous-integration gitlab
1个回答
1
投票

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

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

  • 找出您的公共IP地址,如果您有动态IP,可以使用dNS获取修复域
  • 打开路由器上的端口并配置防火墙
  • 在本地Windows防火墙上打开一个端口
  • 需要了解jenkins正在等待GitLab的webhooks端口
  • 使用--p <docker-internal-port>:<docker-external-port>将此端口映射到docker-container

如果您要提供有关网络基础架构的更多信息,答案将更加清晰。

© www.soinside.com 2019 - 2024. All rights reserved.