2014-09-14 17 views
31

Po przeczytaniu dokumentacji AWS wydaje się, że podczas korzystania z Docker jako platformy na Elastic Beanstalk (EB) (w przeciwieństwie do Tomcata itp.), Można ujawnić tylko jeden port. Próbuję zrozumieć, dlaczego Amazon stworzył to ograniczenie - wydaje się, że nie możesz teraz obsługiwać zarówno HTTP, jak i HTTPS.Wystawianie wielu portów z Dockera w Elastic Beanstalk

Chciałbym używać Dockera jako kontenera, ponieważ pozwala on na uruchamianie kilku połączonych procesów serwera w tym samym kontenerze, z których niektóre wymagają wielu portów (np. RTSP). Czy są jakieś obejścia dla tego rodzaju aplikacji, gdzie powiedzmy, że RTSP i serwer HTTP mogą działać w tym samym pojemniku Docker na EB?

Odpowiedz

4

Możesz napisać plik konfiguracyjny na starcie dla LoadBalancer/ReversProxy Elastic Beanstalk, aby przesłać dodatkowe porty do jego instancji EC2. przykład z Ben Delarre:

"Resources" : { 
    "AWSEBLoadBalancerSecurityGroup": { 
    "Type" : "AWS::EC2::SecurityGroup", 
    "Properties" : { 
     "GroupDescription" : "Enable 80 inbound and 8080 outbound", 
     "VpcId": "vpc-un1que1d", 
     "SecurityGroupIngress" : [ { 
     "IpProtocol" : "tcp", 
     "FromPort" : "80", 
     "ToPort" : "80", 
     "CidrIp" : "0.0.0.0/0" 
     }], 
     "SecurityGroupEgress": [ { 
     "IpProtocol" : "tcp", 
     "FromPort" : "8080", 
     "ToPort" : "8080", 
     "CidrIp" : "0.0.0.0/0" 
     } ] 
    } 
    }, 
    "AWSEBLoadBalancer" : { 
    "Type" : "AWS::ElasticLoadBalancing::LoadBalancer", 
    "Properties" : { 
     "Subnets": ["subnet-un1que1d2"], 
     "Listeners" : [ { 
     "LoadBalancerPort" : "80", 
     "InstancePort" : "8080", 
     "Protocol" : "HTTP" 
     } ] 
    } 
    } 
} 

Ref:

+1

W tym przykładzie otwiera port 80 na równoważniku obciążenia i w serwerach proxy na porcie 8080 w instancji. Nie udostępnia wielu portów instancji. A nawet gdyby tak było, odwrotne proxy na instancji, która przekazuje żądania do okna dokowanego, nie może nasłuchiwać na wielu portach. –

+0

To jest tylko przykład, jak skonfigurować moduł równoważenia obciążenia w instancji init instancji Elastic Beanstalk. Odwrotny serwer proxy może nasłuchiwać i przekazywać wiele portów, przynajmniej według as docs i konsoli aws. To, czego potrzebujesz po wystawieniu wielu portów w dockerze, to zbudowanie na przykładzie i umożliwienie odwrotnego proxy wysłuchania i przesłania potrzebnego portu. –

+0

po prostu EXPOSE PORT (y) w oknie dokowanym następnie utwórz plik konfiguracyjny zawierający ustawienia load balancera w .ebextensions –

4

W swojej obecnej formie wsparcie Docker w Elastic Beanstalk jest w najlepszym przypadku marginalne. FWIW Napisałem a blog post oceniając EB, który to dotknął. Odkryłem, że oprócz twojej obserwacji na temat portów, nie można uruchomić wielu kontenerów, ani nawet dostosować komendy docker run. Mam nadzieję, że będą one rozszerzać wsparcie w przyszłej aktualizacji.

+0

Czy istnieje zalecany sposób, aby dowiedzieć się o tym, czy/kiedy dodano? –

+0

Lubię śledzić [blog Jeffa Barra] (http://aws.amazon.com/blogs/aws/) dla aktualizacji AWS. –

+0

Czy nadal tak jest? – DkM

5

Choć żadna z dokumentacji wyjaśnia, jednym pojemniku Docker Środowisko obsługuje mapowanie wielu portów

{ 
    "AWSEBDockerrunVersion": "1", 
    "Ports": [ 
     { 
      "ContainerPort": "8080" 
     }, 
     { 
      "HostPort": "9000", 
      "ContainerPort": "8090" 
     } 
    ] 
} 

Z powyższej konfiguracji, port 8080 z docker dostanie mapowane do maszyn gospodarzem portu port 80 i 8090 z docker dostanie odwzorowywane na organizację portu urządzenia 9000.

Aby być bardziej jasne, zawsze pierwszy port na liście zostanie zamapowany na port 80 komputera hosta, a pozostały zostanie zmapowany na określony port hosta (lub) tak samo jak port kontenera w przypadku braku portu hosta.

+1

To jest poprawna odpowiedź! Odpowiedź oznaczona jako "poprawna" dotyczy jedynie zapewnienia niezbędnych zmian w infrastrukturze (zasady grupy zabezpieczeń, słuchacz) w celu zapewnienia dostępności dodatkowych portów. – user2124712

Powiązane problemy