網站首頁 編程語言 正文
Docker 的四種網絡模式
Docker 有 bridge、none、host、container 四種網絡模式,提供網絡隔離、端口映射、容器間互通網絡等各種支持,下面開門見山地直接介紹這四種網絡模式。
這四種網絡模式可以通過啟動容器的時候指定,其命令或參數個數如下:
網絡模式 | 參數 | 說明 |
---|---|---|
host模式 | -–net=host | 容器和宿主機共享 Network namespace。 |
container模式 | –-net={id} | 容器和另外一個容器共享 Network namespace。 kubernetes 中的pod就是多個容器共享一個 Network namespace。 |
none模式 | –-net=none | 容器有獨立的Network namespace,但并沒有對其進行任何網絡設置,如分配 veth pair 和網橋連接,配置IP等。 |
bridge模式 | -–net=bridge | 默認為該模式,通過 -p 指定端口映射。 |
這四種模式可以理解成 Docker 怎么虛擬化容器的網絡,隔離程度和共享程度。
bridge 模式
使用 Docker 創建一個 bridge 模式的容器命令格式如下:
docker run -itd -p 8080:80 nginx:latest
bridge 模式稱為網橋模式,首先 Docker 會在主機上創建一個名為 docker0 的虛擬網橋,這個虛擬網絡處于七層網絡模型的數據鏈路層,每當創建一個新的容器時,容器都會通過 docker0 與主機的網絡連接,docker0 相當于網橋。
使用 bridge 模式新創建的容器,其內部都有一個虛擬網卡,名為 eth0,容器之間可以通過 172.17.x.x 相互訪問。
一般情況下,網橋默認 IP 范圍是 172.17.x.x ,可以在宿主機執行 ifpconfig 命令查看所有網卡,里面會包含 Docker 容器的虛擬網卡,可以查看某個容器的 ip。在容器中,也可以使用 ifconfig 命令查看自身的容器 ip:
root@cda6958393cb:/var# ./ifconfig eth0: flags=4163mtu 1500 inet 172.17.0.2 netmask 255.255.0.0 broadcast 172.17.255.255 ether 02:42:ac:11:00:02 txqueuelen 0 (Ethernet) RX packets 347 bytes 9507996 (9.5 MB) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 278 bytes 22384 (22.3 KB) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0 lo: flags=73 mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
可以看到,此容器的 ip 是 172.17.0.2。
使用了 bride 創建的容器,其網絡與主機以及其他容器隔離,以太網接口、端口、路由表以及 DNS配置 都是獨立的。每個容器都好像是一個獨立的主機 ,這便是 bridge(網橋)的作用。但是因為 docker0 的存在,對于容器來說,可以通過 ip 訪問別的容器。
容器1 可以通過 172.17.0.3 訪問容器2,同樣,主機也可以使用這個 ip 訪問容器2 中的服務。
[Error] 提示
bridge 模式 是默認模式,即使是 使用?
docker run -itd nginx:latest
?命令啟動容器,也會創建一個虛擬 IP。
none 模式
這種網絡模式下容器只有 lo 回環網絡,沒有其他網卡,這種類型的網絡沒有辦法聯網,外界也無法訪問它,封閉的網絡能很好地保證容器的安全性。
創建 none 網絡的容器:
docker run -itd --net=none nginx:latest
root@5a67da130f62:/var# ./ifconfig lo: flags=73mtu 65536 inet 127.0.0.1 netmask 255.0.0.0 loop txqueuelen 1000 (Local Loopback) RX packets 0 bytes 0 (0.0 B) RX errors 0 dropped 0 overruns 0 frame 0 TX packets 0 bytes 0 (0.0 B) TX errors 0 dropped 0 overruns 0 carrier 0 collisions 0
host 模式
host 模式會讓容器與主機共享網絡,此時映射的端口可能會生產沖突,但是容器的其余部分(文件系統、進程等)依然是隔離的,此時容器與宿主機共享網絡。
container 模式
container 模式可以讓多個容器之間相互通訊,即容器之間共享網絡。
首先啟動一個 A 容器,A 一般為 bridge 網絡,接著 B 使用?–-net={id}
?連接到 A 中,使用 A 的虛擬網卡,此時 A、B 共享網絡,可以接著加入 B、C、D 等容器。
原文鏈接:https://www.cnblogs.com/whuanle/p/15586840.html
相關推薦
- 2023-07-26 ndoe中express框架的基本使用,接收get、post請求,以及處理回調地獄的優雅解決方法
- 2022-09-19 Tomcat配置HTTPS訪問的實現步驟_Tomcat
- 2022-12-13 Python按天實現生成時間范圍序列的方法詳解_python
- 2022-10-25 docker 啟用時報錯System.InvalidOperationException: Fail
- 2022-09-23 python?pandas創建多層索引MultiIndex的6種方式_python
- 2022-10-02 Android實現倒計時的方案梳理_Android
- 2022-05-19 python中join與os.path.join()函數實例詳解_python
- 2022-06-27 服務器端如何開啟GZIP壓縮功能(Apache、IIS、Nginx)_Linux
- 最近更新
-
- window11 系統安裝 yarn
- 超詳細win安裝深度學習環境2025年最新版(
- Linux 中運行的top命令 怎么退出?
- MySQL 中decimal 的用法? 存儲小
- get 、set 、toString 方法的使
- @Resource和 @Autowired注解
- Java基礎操作-- 運算符,流程控制 Flo
- 1. Int 和Integer 的區別,Jav
- spring @retryable不生效的一種
- Spring Security之認證信息的處理
- Spring Security之認證過濾器
- Spring Security概述快速入門
- Spring Security之配置體系
- 【SpringBoot】SpringCache
- Spring Security之基于方法配置權
- redisson分布式鎖中waittime的設
- maven:解決release錯誤:Artif
- restTemplate使用總結
- Spring Security之安全異常處理
- MybatisPlus優雅實現加密?
- Spring ioc容器與Bean的生命周期。
- 【探索SpringCloud】服務發現-Nac
- Spring Security之基于HttpR
- Redis 底層數據結構-簡單動態字符串(SD
- arthas操作spring被代理目標對象命令
- Spring中的單例模式應用詳解
- 聊聊消息隊列,發送消息的4種方式
- bootspring第三方資源配置管理
- GIT同步修改后的遠程分支