Docker撰写V2网络错误

时间:2017-01-02 19:26:17

标签: docker docker-compose dockerfile docker-machine

我正在尝试在两个容器之间进行通信,但无法做同样的事情。 我在docker compose中添加了一个名为'server'的服务,该服务依赖于另一个名为'endpoint'的服务。 我需要将'端点'的ip和端口传递给'server',我也在做同样的事情

it('Should work', function() {

  spyOn(Service, 'get').and.callThrough();

  expect(Service.get).not.toHaveBeenCalled();

  createController();

  expect(Service.get).toHaveBeenCalled();

  expect(scope.property).toBeFalsy();

  deferred.resolve('some data');
  $rootScope.$digest();

  expect(scope.property).toBeTruthy();
});

但是现在我没有在使用以下命令的主机列表中看到'端点':

command: -userver -e endpoint:51393

这是输出:

docker-compose exec server cat /etc/hosts

我的完整docker-compose.yml文件如下:

127.0.0.1       localhost
::1     localhost ip6-localhost ip6-loopback
fe00::0 ip6-localnet
ff00::0 ip6-mcastprefix
ff02::1 ip6-allnodes
ff02::2 ip6-allrouters
172.21.0.3      49f4808fa677

1 个答案:

答案 0 :(得分:2)

当您使用当前版本的docker compose时,不再通过操作容器的hosts文件来完成从另一个容器到达一个容器,因为这是一个非常静态的设置。

现在,docker-compose使用某种dns服务,允许同一网络中的所有容器在其服务名称下相互查看。这允许停止依赖容器而不会导致依赖容器也停止/重启。为此,您还无需指定depends_on。这只需要在重新启动依赖项时触发依赖服务的重新启动。

有关详细信息,请查看有关网络的docker-compose docs

用于调试情况的一些命令:

docker-compose exec server nslookup endpoint

docker inspect <container_name_of_service>