Docker Swarm でオーバレーネットワークはうまく作れるが
同一ネットワークの別ホストにあるコンテナ同士が通信できないという問題が発生しましたので
解決策をメモしておきます。

ローカル環境ではうまくいくのに、AWS上に載せるとうまくいかない。
いろいろ試行錯誤した結果、vxlanプロトコルでの通信がホスト間でできないと
オーバレイネットワークは有効にならないようです。

僕が行った解決方法は、セキュリティグループの設定で
ホストが所属するVPCの すべてのTCP,UDPのインバウンドを許可したところ
無事疎通が取れるようになりました。

--- EXTENDED


■現象
オーバレーネットワークはうまく作れるが
同一ネットワークの別ホストにあるコンテナ同士が通信できない。


■解決策
Docker Overlay ネットワークは VXLAN(RFC7348)プロトコルを使用するようです。
そのためホスト間で VXLAN が使うポートで疎通が取れているか確認してみましょう。


■資料
https://docs.docker.com/engine/userguide/networking/dockernetworks/
「a built-in VXLAN-based overlay network driver」

VXLANとは
http://www.infraexpert.com/study/virtual3.html