Help us understand the problem. What is going on with this article?

Docker Network メモ

More than 1 year has passed since last update.

クソメモです。
ある程度情報そろったらきれいにします。。。

参考

https://tech.uzabase.com/entry/2017/08/07/172411
https://tech.uzabase.com/entry/2017/08/23/175813
https://docs.docker.com/network/overlay/
https://docs.docker.com/network/network-tutorial-overlay/

Docker マルチホストネットワーク

1. Docker Swarm mode (swarm service network?)

[メモ]
古いバージョンのSwarmだとこの機能を使用するため、分散KVS(etcd,consul,zookeper)が必要であったが、新しめのバージョンではDockerに機能が組み込まれているため、不要になった
 -> いつのバージョンから??

SwarmにてOverlay Networkを利用することでコンテナのマルチホスト間通信を実現する

Breakdown

overlay Networkにて使用されるポート

  • TCP 2377 -> クラスタ管理通信
  • TCP/UDP 7946 -> ノード間通信
  • UDP 4789 -> overlay Network通信

セキュリティ

管理用通信はすべてAESにより暗号化されている

overlay network作成時に"--opt encrypted"オプションを付与してあげることでアプリケーション通信(overlay Network通信?)もIPSECにより暗号化される。(Dockerノード間でIPSECトンネリング)
IPSECも結局AESアルゴリズムにより暗号化されている
 -> ネットワークパフォーマンスに影響する可能性があるため、テストはマスト

おまけ: encryptedしているoverlay networkはwindowsに対応していない

docker swarmを初期構築およびworkerとしてswarmに追加した際に以下のネットワークが作成される

  • ingress
    • swarmの管理用トラフィックの送受信用
    • swarm serviceを構築時、ネットワークを選択しない場合はデフォルトでこれに接続される
  • docker_gwbridge
    • Swarmに関係する個々のdockerデーモン同士が通信する際に利用する
    • ingressをdockerホストのIFに接続する
    • これによりswarm manager/worker間の通信が可能?

overlay networkはserviceにて要求されたタイミングで自動で作成される
-> managerだけで定義すればOK

Control traffic と Data trafficを分割

swarmに登録する際に --advertise-addrおよび--datapath-addrを分ける

2. Overalay Network 構築ツールを使う

flannel -> もともとk8sにてマルチホストネットワークを実現する機能だった

3. 手動で構築

分散KVSとdocker network create -d overlay コマンドを使って構築する

Tutorial

manager
# docker network create --driver=overlay --attachable test-net
wpwhkxk5ovxfheq0z37fi6t0p
manager
# docker run -it --name alpine1 --network test-net alpine
worker1
# docker network ls
managerで作成したnetworkは表示されない

# docker run -dit --name alpine2 --network test-net alpine

# docker network ls
managerで作成したnetworkが表示される
manager
# ping alpine2
PING alpine2 (10.0.3.10): 56 data bytes
64 bytes from 10.0.3.10: seq=0 ttl=64 time=0.679 ms
64 bytes from 10.0.3.10: seq=1 ttl=64 time=0.408 ms
K5K
普段はLTEのインフラ業務を担当してます! 勉強中 ・Docker/k8s/Openstack ・機械学習/DL ・python/Django ・AWS アプリケーション開発に興味あります!
Why not register and get more from Qiita?
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
Comments
No comments
Sign up for free and join this conversation.
If you already have a Qiita account
Why do not you register as a user and use Qiita more conveniently?
You need to log in to use this function. Qiita can be used more conveniently after logging in.
You seem to be reading articles frequently this month. Qiita can be used more conveniently after logging in.
  1. We will deliver articles that match you
    By following users and tags, you can catch up information on technical fields that you are interested in as a whole
  2. you can read useful information later efficiently
    By "stocking" the articles you like, you can search right away
ユーザーは見つかりませんでした