一个应用程序 - >在单个Ec2上运行多个Docker实例

时间:2017-08-01 22:42:22

标签: amazon-web-services docker amazon-ec2

我有一个应用程序,比如api,在ec2上作为docker容器运行。 由于此容器依赖于ec2主机(端口映射),因此无法在同一台计算机上运行多个实例。

我想实现一个状态,其中我有5个主机,它们都是elb,我应该可以在所有这些主机中运行多个容器实例。

我知道我可以使用ECS实现这种状态。

我能用Ec2,ELB和Docker做到这一点吗?

-Thanks

1 个答案:

答案 0 :(得分:0)

有多种方法可以做到这一点

为每个泊坞窗容器使用不同的端口

objArray

然后你可以在端口80上放置一个nginx负载均衡器。详见http://nginx.org/en/docs/http/load_balancing.html

您需要使用下面的配置

 var someObject = {
        "Name1": {
            "key1": "value1",
        },
        "Name2": {
            "key1": "value2",
        }
    }


    var objArray = [];

    for(var i in someObject){
        var key1 = someObject[i];
        for(var x in key1){
            objArray.push({'key' : x, 'val' : key1[x]});
        }
    }

    var optionSelect = document.getElementById("optSelect"),
        selectList = document.createElement("select");

    selectList.id = "mySelect";
    optionSelect.appendChild(selectList);

    for (var i = 0; i < objArray.length; i++) {
        var option = document.createElement("option");
        
        option.value = objArray[i].key; // need to get key1 in here for each value in someObject
        option.text = objArray[i].val; // need to get value 1 or 2 etc in here for each value name in someObject
        optionSelect.appendChild(option);
    }

使用单节点泊坞窗群管理器

您可以使用以下命令

设置单节点泊坞窗群
<select id="optSelect">

 </select>

然后在该机器上运行以下命令

docker run -d -p 81:80 yourimage
docker run -d -p 82:80 yourimage
docker run -d -p 83:80 yourimage
docker run -d -p 84:80 yourimage
docker run -d -p 85:80 yourimage

这将创建5个负载平衡容器并在端口80上发布它们。

两种情况都不需要ELB。我怀疑ELB在相同的主机+多端口场景下工作