2017-09-14 13 views
0

InfluxのTelegrafでStatsd Dockerコンテナを実行しようとしています。 Dockerfileは、超簡単です:弾性ビーンストークシングルドッカーコンテナ - UDPポートは公開されていますが、EC2インスタンスにはマッピングされていません

FROM telegraf:latest 

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

# Expose the statsd port 
EXPOSE 8125:8125 

# Start the service 
CMD telegraf 

注:ポート上の露出したポート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のインスタンスに、そしてドッキング・コンテナ内に配置します。

インスタンス自体

ワン(ないコンテナ内)、私はそうのよう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 

しかしときI容器に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 

をそして、あなたはとしてそれを実行します:これは以下のように実行する必要があり、私はこのことを認識してんだけど、私はElastic Beanstalkでを通じて私の全体のシステムを導入しています

docker run -p 8125:8125 mycontainer 
+0

- 自動的に起動しますドッカーコンテナ。私はBeanstalkを 'docker run'引数で設定する方法があると思っていますが、どういう形になっているのか分かりません... –

+0

正直言って私は決して使ったことはありませんが、 /docs.aws.amazon.com/elasticbeanstalk/latest/dg/create_deploy_dockerpreconfig.walkthrough.htmlまた、これを実現するには、コンテナをリンクする必要があります。したがって、何もマッピングせずに互いに話すことができます。 – Sergiu

+0

残念ながら、EBは私がこの特定のユースケースに対して欲しいものをまったく行っていません。私はUDPサポートを必要とし、ELBはUDPサポートが不足しているため、このために複数のコンテナ環境を実行することはできません。ですから、私は単一のコンテナ環境に悩まされています。私はEBがドッキング・コンテナの起動方法を定義する開発者のサポートを欠いていることに驚いています。 –

関連する問題