0

Influx 's Telegraf를 사용하여 Statsd Docker 컨테이너를 실행하려고합니다.탄성 Beanstalk 단일 도커 컨테이너 - 노출 된 UDP 포트이지만 EC2 인스턴스에 매핑되지 않음

FROM telegraf:latest 

# Configure Telegraf 
ADD telegraf.conf /etc/telegraf/ 

# Expose the statsd port 
EXPOSE 8125:8125 

# Start the service 
CMD telegraf 

참고 : :이 Dockerfile 슈퍼 간단 포트 8125

온 노출 된 포트 나는 docker ps -a 나는 포트가 실제로 노출되는 것을 볼 수 있습니다를 실행하면 문제

CONTAINER ID  IMAGE    COMMAND     CREATED    STATUS    PORTS         NAMES 
8398e36c4e48  e26197bce0cc  "/entrypoint.sh /b..." 16 hours ago  Up 16 hours   8094/tcp, 8092/udp, 8125/udp, 8125/tcp inspiring_goodall 

그들이 매핑되지 않는다는 것입니다. 패킷을 만들 경우 테스트하여 나는이 모든 것을 확인할 수 있습니다

"Ports": { 
    "8092/udp": null, 
    "8094/tcp": null, 
    "8125/tcp": null, 
    "8125/udp": [ 
       { 
        "HostIp": "0.0.0.0", 
        "HostPort": "8125" 
       } 
      ] 
} 

: 내가 올바른 생각한다면, 그것은이 같은 유사합니다

"Ports": { 
    "8092/udp": null, 
    "8094/tcp": null, 
    "8125/tcp": null, 
    "8125/udp": null 
} 

: docker inspect <ID>에서 내가 네트워크 설정에서 다음을 참조 할 수 있습니다 EC2 인스턴스와 docker 컨테이너 둘 다에 연결됩니다.

하나의 인스턴스 자체 (안 컨테이너 내), 내가 지금 같은 tcpdump를 통해 트래픽 패킷을 모니터링하고, 인스턴스 입니다 포트 8125에 UDP 패킷을 읽는 것을 볼 수 있습니다 : 다음 경우

[[email protected]_HOTNAME ec2-user]# tcpdump -n udp port 8125 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
listening on eth0, link-type EN10MB (Ethernet), capture size 65535 bytes 
10:34:56.190739 IP BLOCKED_HOSTNAME > BLOCKED_HOSTNAME: UDP, length 46 
10:34:57.199689 IP BLOCKED_HOSTNAME > BLOCKED_HOSTNAME: UDP, length 46 
10:34:58.179673 IP BLOCKED_HOSTNAME > BLOCKED_HOSTNAME: UDP, length 46 

하지만를 나는 용기에 docker exec을, 나는 아무것도 얻을 tcpdump 실행 - 그냥 여기 앉아 : 노출 된 포트가 인스턴스에

[email protected]:/# tcpdump -i eth0 -n udp port 8125 
tcpdump: verbose output suppressed, use -v or -vv for full protocol decode 
listening on eth0, link-type EN10MB (Ethernet), capture size 262144 bytes 

왜 매핑되지 않습니다?

참고 :이 기능을 단일 컨테이너 환경으로 실행해야하므로 다중 컨테이너를 제안하지 마십시오.

답변

-1

포트를 노출하는 방법이 잘못되었습니다. 이것은 다음과 같이 수행해야합니다 :

EXPOSE 8125 

을하고 당신은 실행 :이 알고 있어요

docker run -p 8125:8125 mycontainer 
+0

,하지만 난 탄성 콩 줄기를 통해 내 전체 시스템을 구축하고 있습니다 - 자동으로 시작 도커 컨테이너. Beanstalk을'docker run' 인수로 구성하는 방법이 있다고 생각하지만, 어떻게 확신 할 수 없습니까? –

+0

솔직히 말해서 나는 그것을 사용하지 않았지만, 여기에 예제를 제공하고 있습니다. http : // /docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_dockerpreconfig.walkthrough.html 또한 컨테이너를 연결하려는 경우이 작업을 수행하기 위해 아무 것도 매핑하지 않고 서로 대화 할 수 있습니다. – Sergiu

+0

불행히도 EB는이 특정 사용 사례에 대해 내가 원하는 것을 정확하게 수행하지 않습니다. UDP 지원이 필요하고 ELB에 UDP 지원이 없기 때문에 다중 컨테이너 환경을 실행할 수 없습니다. 그래서 나는 하나의 컨테이너 환경에 처해있다. EB가 도커 컨테이너 시작 방법을 정의하는 개발자에 대한 지원이 부족하다는 사실에 놀랐습니다. –