網站首頁 編程語言 正文
1、自定義網絡實現容器互聯
四類網絡模式,使用docker network ls查看docker網絡模式
Docker網絡模式 | 配置 | 說明 |
---|---|---|
host模式 | –net=host | 容器和宿主機共享Network namespace。 |
container模式 | –net=container:NAME_or_ID | 容器和另外一個容器共享Network namespace。 kubernetes中的pod就是多個容器共享一個Network namespace。 |
none模式 | –net=none | 容器有獨立的Network namespace,但并沒有對其進行任何網絡設置,如分配veth pair 和網橋連接,配置IP等。 |
bridge模式 | –net=bridge | 橋接模式(默認為該模式) |
–net=bridge 這個是默認值,連接到默認的網橋。
–net=host 告訴 Docker 不要將容器網絡放到隔離的名字空間中,即不要容器化容器內的網絡。此時容器使用本地主機的網絡,它擁有完全的本地主機接口訪問權限。容器進程可以跟主機其它 root 進程一樣可以打開低范圍的端口,可以訪問本地網絡服務比如 D-bus,還可以讓容器做一些影響整個主機系統的事情,比如重啟主機。因此使用這個選項的時候要非常小心。如果進一步的使用 --privileged=true,容器會被允許直接配置主機的網絡堆棧。
–net=container:NAME_or_ID 讓 Docker 將新建容器的進程放到一個已存在容器的網絡棧中,新容器進程有自己的文件系統、進程列表和資源限制,但會和已存在的容器共享 IP 地址和端口等網絡資源,兩者進程可以直接通過 lo 環回接口通信。
–net=none 讓 Docker 將新容器放到隔離的網絡棧中,但是不進行網絡配置。之后,用戶可以自己進行配置。
自定義網絡
# --driver bridge 橋接模式 # --subnet 192.168.0.0/16 子網絡網段 # --gateway 192.168.0.1 網關 # mynet 網絡名 docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
查看自定義的網絡信息:
docker network inspect mynet
在自定義的網路中創建容器
docker run -d -P --name tomcat01-net-01 --net mynet tomcat docker run -d -P --name tomcat01-net-02 --net mynet tomcat
再次查看自定義的網絡信息:發現新創建的兩個容器添加進網絡中了。
使用容器名互相進行ping測試
tomcat01-net-01 ping tomcat01-net-02:
tomcat01-net-02ping tomcat01-net-01:
現在不使用 --link 容器間也可以互相 ping 通了,容器間可以互相通信。
2、網絡連通
需求分析圖
創建tomcat01和tomcat02兩個容器:
docker run -d -P --name tomcat01 tomcat docker run -d -P --name tomcat02 tomcat
很明顯,直接ping通是不可能的,需要先把tomcat01容器和mynet網絡連通。
docker network connect
docker network connect 命令是用于將 docker 容器連接到某個網絡中,可以使用容器名或者容器ID。
用法:
docker network connect [OPTIONS] NETWORK CONTAINER
把tomcat01容器連接到mynet網絡上:
docker network connect mynet tomcat01
查看mynet的網絡信息:docker inspect mynet
tomcat01已經連接到mynet網絡上,像tomcat01-net-tomcat01和tomcat01-net-tomcat02一樣。
此時,tomcat01已經和mynet網絡中的兩個容器連接起來,因為這三個容器處于同一網絡中,當然可以互相通信:
一個容器兩個網絡:
查看tomcat01的元數據:docker inspect tomcat01
tomcat01連接到自定義的mynet網絡后,就有兩個網絡了。
原文鏈接:https://blog.csdn.net/wpc2018/article/details/122192990
相關推薦
- 2022-06-02 Android?Spinner和GridView組件的使用示例_Android
- 2023-10-16 使用elemnt移動端字體大小會自動變小
- 2022-03-25 修改?asp.net?core?5?程序的默認端口號_ASP.NET
- 2022-12-10 C語言中使用qsort函數對自定義結構體數組進行排序_C 語言
- 2023-10-15 C++ 實現基于時序公平的讀寫鎖
- 2022-03-16 詳解c#中Array,ArrayList與List<T>的區別、共性與相互轉換_C#教程
- 2022-06-19 Go中Writer和Reader接口的使用入門_Golang
- 2022-01-08 出現WARN org.springframework.web.servlet.PageNotFoun
- 最近更新
-
- 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同步修改后的遠程分支