Docker网络在容器内运行的衍生容器

时间:2018-04-22 20:32:29

标签: docker networking docker-compose

我在下面有一个docker-compose文件。我试图通过network-test服务尝试访问api,该服务基本上通过docker run curl-test调用docker.sockcurl-test image / service基本上通过curl http://api:3000将curl调用到api端点。当我运行docker compose时,curl-test服务按预期工作,但network-test服务失败并显示could not resolve host api。我的问题是如何从network-test内将对容器的引用传递给生成的容器?

version: '3'
services:
    api:
        build:
            context: api
            dockerfile: Dockerfile
        ports: 
            - 3000:3000
    curl-test:
        image: curl-test
        build:
            context: curl-test
            dockerfile: Dockerfile
        depends_on: 
            - api
        links: 
            - api
        tty: true
    network-test:
        build:
            context: network-test
        volumes:
            - /var/run/docker.sock:/var/run/docker.sock
        depends_on: 
            - api
        links: 
            - api

1 个答案:

答案 0 :(得分:1)

组合服务在他们自己的专用网络上,您提供这些服务的名称,api,curl-test和网络测试只能由此网络上的DNS解析。您已从此网络中生成了一个容器,但它未附加到该容器中。由于新容器不属于此网络,因此无法解析名称' API'。您可以将容器附加到网络以解决此问题,但前提是您的组合网络是可附加的,这是默认设置。

您可以在此处阅读更多内容:https://docs.docker.com/compose/networking/

此外,没有必要运行卷曲测试服务 - 它可能会立即退出。您是在运行时创建的,所以不应该在此处列出。