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
왜 매핑되지 않습니다?
참고 :이 기능을 단일 컨테이너 환경으로 실행해야하므로 다중 컨테이너를 제안하지 마십시오.
,하지만 난 탄성 콩 줄기를 통해 내 전체 시스템을 구축하고 있습니다 - 자동으로 시작 도커 컨테이너. Beanstalk을'docker run' 인수로 구성하는 방법이 있다고 생각하지만, 어떻게 확신 할 수 없습니까? –
솔직히 말해서 나는 그것을 사용하지 않았지만, 여기에 예제를 제공하고 있습니다. http : // /docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_dockerpreconfig.walkthrough.html 또한 컨테이너를 연결하려는 경우이 작업을 수행하기 위해 아무 것도 매핑하지 않고 서로 대화 할 수 있습니다. – Sergiu
불행히도 EB는이 특정 사용 사례에 대해 내가 원하는 것을 정확하게 수행하지 않습니다. UDP 지원이 필요하고 ELB에 UDP 지원이 없기 때문에 다중 컨테이너 환경을 실행할 수 없습니다. 그래서 나는 하나의 컨테이너 환경에 처해있다. EB가 도커 컨테이너 시작 방법을 정의하는 개발자에 대한 지원이 부족하다는 사실에 놀랐습니다. –