Docker - 从主机连接到容器

标签 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 图像的容器。

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

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

    感谢您的帮助:)

    最佳答案

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

    如果你的 Gitlab 实例真的在互联网上,你不能用 localhost 或任何本地 IP 地址来解决这个问题。你需要:

  • 找出您的公共(public) IP 地址,如果您有动态 IP
  • ,则可以使用 dynDNS 获取固定域
  • 在您的路由器上打开一个端口并配置您的防火墙
  • 在本地 Windows 防火墙上打开一个端口
  • 需要找出 jenkins 在哪个端口上等待来自 GitLab
  • 的 webhook
  • 通过使用将此端口映射到 docker-container--p <docker-internal-port>:<docker-external-port>

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

    关于Docker - 从主机连接到容器,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/52313745/

    相关文章:

    java - java游戏使用TCP和UDP

    使用 TCP 发送/接收时 C# 流乱序

    python - 使用 MySQL 容器对 Django 应用程序进行 Dockerize

    c - 在C中的代理服务器中转发GET请求

    docker - 在 DockerFile 中定义 VOLUME 挂载点而不是 adhoc cmd-line -v 的目的是什么?

    java - 即使没有单元测试,构建自动化真的有助于提高生产力吗?

    jenkins - 如何在扩展选择参数插件中获取Jenkins环境变量

    bash - 在Jenkins管道中的ssh上执行bash -c中的管道或for循环

    php - 如何基于启用a2enmod重写的php镜像创建容器?

    python - django.core.exceptions.ImproperlyConfigured : Could not find the GDAL library