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
340
0
Share
Embed
Copy iframe code
Copy JS code
Copy link
Start on current slide
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
410
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
850
Other Decks in Technology
See All in Technology
LLM・AIエージェントシステムベストプラクティス
shibuiwilliam
6
1.4k
少人数チームで実現する、大規模AWSサーバーレス基盤における"揺らがない"信頼性運用
maimyyym
1
110
Bits AI を制するものは Datadog を制す / The player that controls Bits AI, controls Datadog
kaminashi
0
130
ブラウザ研修 2026
recruitengineers
PRO
6
1.1k
強化学習「理論」入門
enakai00
3
3.6k
LLM Internals: 언어 모델의 계보와 알고리즘 진화 (2023~2026)
inureyes
PRO
0
590
まちスペース®とデジタルツインと「まちづくり」
hiro_ogi
0
130
『三匹の子ぶた』から学ぶネットワークセキュリティの昔と今 / Network Security: Then and Now Through the Lens of The Three Little Pigs
nttcom
1
6.2k
ホームラボ紹介
y_sera15
0
200
2026-08-15 JAWS-UG 茨城 #16 Secrets ManagerにおけるSecret値の管理(Terraformの場合) / Secrets Manager Secrets
masasuzu
0
240
【GCC2026】大規模言語モデルを活用した内製検索サービスの社内展開や業務活用
bandainamcostudios
PRO
0
210
関東Kaggler会発表資料
takoi
1
250
Featured
See All Featured
Cheating the UX When There Is Nothing More to Optimize - PixelPioneers
stephaniewalter
287
14k
Scaling GitHub
holman
464
140k
The Anti-SEO Checklist Checklist. Pubcon Cyber Week
ryanjones
0
210
Jess Joyce - The Pitfalls of Following Frameworks
techseoconnect
PRO
1
370
How to Align SEO within the Product Triangle To Get Buy-In & Support - #RIMC
aleyda
2
1.8k
[SF Ruby Conf 2025] Rails X
palkan
2
1.3k
[RailsConf 2023] Rails as a piece of cake
palkan
59
6.9k
Learning to Love Humans: Emotional Interface Design
aarron
275
41k
Ecommerce SEO: The Keys for Success Now & Beyond - #SERPConf2024
aleyda
1
2.1k
XXLCSS - How to scale CSS and keep your sanity
sugarenia
249
1.3M
Pawsitive SEO: Lessons from My Dog (and Many Mistakes) on Thriving as a Consultant in the Age of AI
davidcarrasco
0
210
Skip the Path - Find Your Career Trail
mkilby
1
190
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/