代码之家  ›  专栏  ›  技术社区  ›  Christopher Francisco

如何通过HTTP访问从另一个安装了/var/run/docker.sock的容器创建的容器?

  •  -1
  • Christopher Francisco  · 技术社区  · 6 年前

    这是一个用于CI服务器的安装程序。CI没有像 node 安装, . 所以我必须在容器中运行测试。

    此容器将依次创建第二个容器以对其运行集成测试。

    /var/run/docker.sock 这样它就可以创建第二个容器。 .

    我的构建步骤如下:

    1. 建立docker图像并标记它 my-app
    2. docker run ..... my-app yarn test
    3. 运行集成测试, 点燃一个容器 . docker run -v /var/run/docker.sock:/var/run/docker.sock ..... my-app yarn test:integration

    总之,第一个容器调用 yarn:integration 这会激发第二个容器在端口3001上运行应用程序,然后对第二个容器运行测试。最后,它停止了第二个容器。

    问题是我在第一个容器中的集成测试试图通过 localhost:3001 localhost 不是第二个容器的正确主机。

    如何从第一个容器访问第二个容器,考虑到它们是并排的(而不是一个在另一个里面)?

    1 回复  |  直到 6 年前
        1
  •  1
  •   r3mus n0x    6 年前

    localhost 在容器中不指向主机,而是指向容器本身。如果你想到达另一个容器,你需要用它 集装箱实际IP 它可以被发现 docker inspect <CONTAINER ID> (即。

    或者,您可以创建 user-defined network connect my-app:3001 . 注意,容器名是由 --name 参数 docker run . 您还需要使用容器的内部端口和 -p 参数。