我知道这是一个有点长的问题,但任何帮助都会受到赞赏。
简短版本只是我想让一组容器在多个主机上相互通信,并且可以通过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
我不会放弃,但我会感激一些帮助。
答案 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