Upgrade to Pro
— share decks privately, control downloads, hide ads and more …
Speaker Deck
Features
Speaker Deck
PRO
Sign in
Sign up for free
Search
Search
Docker Networking 詳解
Search
Rueian
October 27, 2016
Technology
300
0
Share
Docker Networking 詳解
介紹 Bridge Driver、Host Driver、Macvlan Driver、還有 Swarm Overlay Network 如何運作
Rueian
October 27, 2016
More Decks by Rueian
See All by Rueian
DDIA Chapter 9 Notes
rueian
0
370
Cilium's Envoy Filter and VS Bridge to Kubernetes
rueian
0
1.6k
Cilium & cgroup eBPF
rueian
0
1.5k
Golang PostgreSQL Libraries Comparison With Wireshark
rueian
0
1.4k
Scaling Offline Database Usage on GCP @ Dcard
rueian
1
810
Other Decks in Technology
See All in Technology
コードや知識を組み込む / Incorporate Code and Knowledge
ks91
PRO
0
160
最初の一歩を踏み出せなかった私が、誰かの背中を押したいと思うようになるまで / give someone a push
mii3king
0
160
Standards et agents IA : un tour d’horizon de MCP, A2A, ADK et plus encore
glaforge
0
170
国内外の生成AIセキュリティの最新動向 & AIガードレール製品「chakoshi」のご紹介 / Latest Trends in Generative AI Security (Domestic & International) & Introduction to AI Guardrail Product "chakoshi"
nttcom
4
1.3k
Pure Intonation on Browser: Building a Sequencer with Ruby
nagachika
0
140
Expiration of Secure Boot Certificates for vSphere Virtual Machines
mirie_sd
0
100
Oracle AI Database@AWS:サービス概要のご紹介
oracle4engineer
PRO
4
2.4k
AgentCore Managed Harness を使ってみよう
yakumo
2
120
Keeping Ruby Running on Cygwin
fd0
0
170
データを"持てない"環境でのアノテーション基盤設計
sansantech
PRO
1
130
Choose your own adventure in agentic design patterns
glaforge
0
140
AI時代 に増える データ活用先
takahal
0
250
Featured
See All Featured
Making the Leap to Tech Lead
cromwellryan
135
9.8k
Avoiding the “Bad Training, Faster” Trap in the Age of AI
tmiket
0
130
Efficient Content Optimization with Google Search Console & Apps Script
katarinadahlin
PRO
1
510
Building Better People: How to give real-time feedback that sticks.
wjessup
370
20k
End of SEO as We Know It (SMX Advanced Version)
ipullrank
3
4.1k
Why Your Marketing Sucks and What You Can Do About It - Sophie Logan
marketingsoph
0
130
HU Berlin: Industrial-Strength Natural Language Processing with spaCy and Prodigy
inesmontani
PRO
0
320
Site-Speed That Sticks
csswizardry
13
1.2k
個人開発の失敗を避けるイケてる考え方 / tips for indie hackers
panda_program
122
21k
Agile that works and the tools we love
rasmusluckow
331
21k
Creating an realtime collaboration tool: Agile Flush - .NET Oxford
marcduiker
35
2.4k
Utilizing Notion as your number one productivity tool
mfonobong
4
290
Transcript
Docker Networking Rueian docker engine 1.12
內建的 Driver • null • bridge • host • macvlan
• overlay in swarm
Bridge Driver • 預設 bridge driver 在創建網路路的時候會在 linux 上⾯面開⼀一張 interface,可能叫做
br-xxxx,並利利⽤用 iptables NAT 連接外網。 • 當有容器加入該網路路的時候,docker 會為該容器創建⼀一個 linux network namespaces,然後再創建⼀一對互相連接的 veth peer,將其中⼀一個 veth 放置於該 namespace 底下,另外⼀一個 veth 則與 br-xxxx 做 bridge。如此⼀一來來就完成容器的網路路設 定。 • 若若容器有指定 -p 對外開放 port 的話,則是透過 iptables 做 DNAT 達成。
關於 Network Namespace & veth pair Network Namespace 可以創建出 ⼀一個虛擬化的網路路環境。
Namespace 透過 veth peer 與外界連接。 圖片出處:http://www.slideshare.net/zuan0312/linux-network-namespace
預設的 docker0 就是 bridge 圖片來來源:http://www.slideshare.net/MadhuVenugopal2/docker-112-networking-deep-dive
試試⼿手動將容器加入 docker0
試試⼿手動將容器加入 docker0
試試⼿手動將容器加入 docker0 圖片來來源:https://docs.docker.com/v1.8/articles/networking/
Host Driver • host network 不會創建 netwrok namespace,也不 會創 veth
pair,⽽而是直接使⽤用 host 的 network stack • docker run --net=host busybox ifconfig 可以發現輸 出跟直接在 host 下 ifconfig ⼀一模⼀一樣。
Macvlan Driver • 當 docker 需要接入外⾯面 802.1Q vlan 的時候,要⽤用 macvlan
driver。 • docker network create -d macvlan --subnet=192.168.50.0/24 --gateway=192.168.50.1 -o parent=eth0.50 macvlan50 • 需要指定 vlan 對應的 subnet 以及 gateway 還有 parent 的 interface, 利利如 eth0.50 • 如果 docker 找不到 parent interface,則會⾃自動創建。 若若要⾃自⼰己創則: ip link add link eth0 name eth0.50 type vlan id 50 不過 docker 可以⾃自動管理理這些 sub interface,就算重開機後 docker 也 可以把這些 interface ⾃自動創建回來來。
Macvlan Driver 圖片來來源:https://github.com/docker/libnetwork/blob/master/docs/macvlan.md 將三個容器個別加入到三個 vlan
Overlay in Swarm • Overlay network 由 data plane 跟
control plane 組 成。 data plane 負責傳送資料,control plane 負責 保存傳遞 routing 跟 service discovery 訊息。 • 在 docker swarm 中,data plane 封包傳遞採⽤用 vxlan 格式包裝,還可以再套⼀一層 IPSec tunnel 加 密。control plane 採⽤用 Gossip based protocol,使 ⽤用 AES 加密,每⼗十⼆二⼩小時會換 key,且⽤用 decentralize store 保存資訊。
Networking in Swarm • swarm 模式開啟時, docker 會先創建⼀一個 docker_gwbridge bridge
network,透過 iptables 做 NAT,作為對外的 gateway,跟 docker0 ⼀一樣。 • 除此之外還會創建⼀一個 ingress overlay network,以及 ⼀一個 ingress sbox namespace。所有的 swarm service container 都會加入 ingress overlay network。 ⽽而這個 ingress sbox 將會透過 ingress overlay network 完成 docker swarm 的 port-publish, routing mesh, loadbalancing 功能。
圖片來來源:http://www.slideshare.net/MadhuVenugopal2/docker-112-networking-deep-dive
Networking in Swarm • docker service create --replicas 1 \
-p 8080:80 \ --network my-overlay \ nginx • port-publish: docker 會將所有 node 的 8080 port 透過 iptables DNAT 設定把流 量量導入各⾃自的 ingress sbox。 • routing mesh + ingress loadbalancing: 流量量進入 ingress sbox 之後會透過 iptables 打上對應的 firewall mark 再交給 IPVS 去根據 mark 找到 nginx 在 ingress overlay network 的 ip 列列表然後做 RR loadbalancing。
圖片來來源:http://www.slideshare.net/MadhuVenugopal2/docker-112-networking-deep-dive
Networking in Swarm • 若若想要在 swarm 裡⾯面直接連接內部服務,必須他們 加入同⼀一個非 ingress 的
overlay 網路路。 • 在同⼀一個 overlay 網路路的 container 可以透過 service name 去跟 embedded DNS 查詢 VIP 再透過 iptables 打上 mark 再交給 IPVS 根據 mark 去 RR 存 取服務。
圖片來來源:http://www.slideshare.net/MadhuVenugopal2/docker-112-networking-deep-dive
參參考 • Docker 1.12 networking deep dive • 簡介 Linux
的 Network Namespace 功能 • Docker libnetwork design • https://github.com/docker/libnetwork/blob/master/docs/macvlan.md • overlay網路路技術之VXLAN詳解 • IPVS 百度 • Swarm mode overview • Understand Docker container networks • https://docs.docker.com/v1.8/articles/networking/