Docker / Boot2Docker:如何在没有端口转发的情况下运行同一容器的多个实例?

时间:2015-06-16 04:39:33

标签: docker virtualbox nat portforwarding boot2docker

我有一个侦听端口8080的容器。我想在同一主机上启动同一容器的3个实例,而不必进行端口转发。我想使用唯一的IP访问每个实例。

我正在通过Boot2Docker运行Docker,因为我在Mac机器上运行它。我不打算运行Boot2Docker的多个实例,因为它是内存密集型的。

我不想进行端口转发的原因是因为我的应用程序是分布式应用程序。集群中的每个节点都假定其对等体在同一端口上运行。

1 个答案:

答案 0 :(得分:0)

(也许boot2docker中有更好的解决方案。)

对于快速解决方案,我建议通过Vagrant进行此操作。

**查看本文档。 https://coreos.com/docs/running-coreos/platforms/vagrant/

更新config.rb文件

config.rb

# Size of the CoreOS cluster created by Vagrant
$num_instances=3

**使用三个CoreOS实例启动vagrant。 启动机器:

vagrant up

列出正在运行的机器的状态:

$ vagrant status
Current machine states:

core-01                   running (virtualbox)
core-02                   running (virtualbox)
core-03                   running (virtualbox)

This environment represents multiple VMs. The VMs are all listed
above with their current state. For more information about a specific
VM, run `vagrant status NAME`.

**登录每个实例并启动docker容器

docker pull <image>
docker run ...

另一种方法是通过Docker机器

  

注意:计算机目前处于测试阶段,因此可能会发生变化。我们不建议您在生产中使用它。

使您可以轻松地在计算机,云提供商和自己的数据中心内创建Docker主机。它创建服务器,在它们上安装Docker,然后配置Docker客户端与它们通信。

相关文件:https://docs.docker.com/machine/