Docker编排

时间:2014-04-25 13:07:28

标签: linux docker

我知道这是一个有点长的问题,但任何帮助都会受到赞赏。

简短版本只是我想让一组容器在多个主机上相互通信,并且可以通过SSH访问。 我知道有这方面的工具,但我无法做到。

长版本是:

有一个软件有多个组件,这些组件可以安装在任意数量的机器上。该软件有客户端和服务器端。 客户端 - 服务器和服务器端组件都通过UDP端口进行通信。 服务器使用CentOS,客户端使用Microsoft Windows。

我想创建一个由4个容器组成的测试环境,这些组件将分布在这些容器和客户端计算机上。 docker主机是Ubuntu,容器是CentOS。 如果我将所有组件安装在一个容器中,它就可以正常工作,如果有的话,那就更多了。根据日志它的工作但不是。

我读到你需要链接容器或使用像Maestro这样的协调器来执行此操作,但到目前为止我无法执行此操作。

我想要的是,如果容器在一个或多个主机上相互通信,则能够启动一个集合。我希望能够使用ssh访问这些容器,因此服务应该自动启动。

对于容器使用ddns也会很棒,因为名称会一次又一次地使用,但IP地址可能会改变,但这只是最重要的。

一些规格:

主机是Ubuntu 12.04.4 LTS x86_64的全新安装 Docker是最新版本。 (lxc-docker 0.10.0)我使用了本机驱动程序。 容器是一个简单的简单的centos从码头指数中拉出来的。我在容器上安装了一些基本内容:openssh-server,mc,java-jre。 我将docker网络更改为可以从内部网络访问的网络。 IP表规则已被清除,因为我不需要它们,但也尝试使用那些但没有运气。 /etc/default/docker文件更改:

    DOCKER_OPTS="--iptables=false"

或使用公开的API:

    DOCKER_OPTS="-H tcp://0.0.0.0:4243 --iptables=false"

软件使用的端口介于6000-9000之间,但我尝试打开所有端口。 运行命令的示例:

    docker run -h <hostname> -i -t  --privileged --expose 1-65535/udp <image> /bin/bash

我也尝试使用公开的API:

    docker -H :4243 run -h <hostname> -i -t  --privileged --expose 1-65535/udp <image> /bin/bash

我不会放弃,但我会感激一些帮助。

3 个答案:

答案 0 :(得分:2)

您可能想看一下开发中docker swarm项目。它允许您将您的测试机器集视为可以将容器部署到的集群。

答案 1 :(得分:0)

可以简单地使用fig进行编排并将容器链接在一起,而不是执行所有ddns和端口转发。 fig.yml语法很简单。

答案 2 :(得分:0)

您可以使用weave进行网络连接。您可以使用这些教程

https://github.com/weaveworks/weave

http://xmodulo.com/networking-between-docker-containers.html