Docker之自定義網(wǎng)絡(luò)實現(xiàn)
1、自定義網(wǎng)絡(luò)實現(xiàn)容器互聯(lián)
四類網(wǎng)絡(luò)模式,使用docker network ls查看docker網(wǎng)絡(luò)模式
Docker網(wǎng)絡(luò)模式 | 配置 | 說明 |
---|---|---|
host模式 | –net=host | 容器和宿主機共享Network namespace。 |
container模式 | –net=container:NAME_or_ID | 容器和另外一個容器共享Network namespace。 kubernetes中的pod就是多個容器共享一個Network namespace。 |
none模式 | –net=none | 容器有獨立的Network namespace,但并沒有對其進行任何網(wǎng)絡(luò)設(shè)置,如分配veth pair 和網(wǎng)橋連接,配置IP等。 |
bridge模式 | –net=bridge | 橋接模式(默認為該模式) |
–net=bridge 這個是默認值,連接到默認的網(wǎng)橋。
–net=host 告訴 Docker 不要將容器網(wǎng)絡(luò)放到隔離的名字空間中,即不要容器化容器內(nèi)的網(wǎng)絡(luò)。此時容器使用本地主機的網(wǎng)絡(luò),它擁有完全的本地主機接口訪問權(quán)限。容器進程可以跟主機其它 root 進程一樣可以打開低范圍的端口,可以訪問本地網(wǎng)絡(luò)服務(wù)比如 D-bus,還可以讓容器做一些影響整個主機系統(tǒng)的事情,比如重啟主機。因此使用這個選項的時候要非常小心。如果進一步的使用 --privileged=true,容器會被允許直接配置主機的網(wǎng)絡(luò)堆棧。
–net=container:NAME_or_ID 讓 Docker 將新建容器的進程放到一個已存在容器的網(wǎng)絡(luò)棧中,新容器進程有自己的文件系統(tǒng)、進程列表和資源限制,但會和已存在的容器共享 IP 地址和端口等網(wǎng)絡(luò)資源,兩者進程可以直接通過 lo 環(huán)回接口通信。
–net=none 讓 Docker 將新容器放到隔離的網(wǎng)絡(luò)棧中,但是不進行網(wǎng)絡(luò)配置。之后,用戶可以自己進行配置。
自定義網(wǎng)絡(luò)
# --driver bridge 橋接模式 # --subnet 192.168.0.0/16 子網(wǎng)絡(luò)網(wǎng)段 # --gateway 192.168.0.1 網(wǎng)關(guān) # mynet 網(wǎng)絡(luò)名 docker network create --driver bridge --subnet 192.168.0.0/16 --gateway 192.168.0.1 mynet
查看自定義的網(wǎng)絡(luò)信息:
docker network inspect mynet
在自定義的網(wǎng)路中創(chuàng)建容器
docker run -d -P --name tomcat01-net-01 --net mynet tomcat docker run -d -P --name tomcat01-net-02 --net mynet tomcat
再次查看自定義的網(wǎng)絡(luò)信息:發(fā)現(xiàn)新創(chuàng)建的兩個容器添加進網(wǎng)絡(luò)中了。
使用容器名互相進行ping測試
tomcat01-net-01 ping tomcat01-net-02:
tomcat01-net-02ping tomcat01-net-01:
現(xiàn)在不使用 --link 容器間也可以互相 ping 通了,容器間可以互相通信。
2、網(wǎng)絡(luò)連通
需求分析圖
創(chuàng)建tomcat01和tomcat02兩個容器:
docker run -d -P --name tomcat01 tomcat docker run -d -P --name tomcat02 tomcat
很明顯,直接ping通是不可能的,需要先把tomcat01容器和mynet網(wǎng)絡(luò)連通。
docker network connect
docker network connect 命令是用于將 docker 容器連接到某個網(wǎng)絡(luò)中,可以使用容器名或者容器ID。
用法:
docker network connect [OPTIONS] NETWORK CONTAINER
把tomcat01容器連接到mynet網(wǎng)絡(luò)上:
docker network connect mynet tomcat01
查看mynet的網(wǎng)絡(luò)信息:docker inspect mynet
tomcat01已經(jīng)連接到mynet網(wǎng)絡(luò)上,像tomcat01-net-tomcat01和tomcat01-net-tomcat02一樣。
此時,tomcat01已經(jīng)和mynet網(wǎng)絡(luò)中的兩個容器連接起來,因為這三個容器處于同一網(wǎng)絡(luò)中,當然可以互相通信:
一個容器兩個網(wǎng)絡(luò):
查看tomcat01的元數(shù)據(jù):docker inspect tomcat01
tomcat01連接到自定義的mynet網(wǎng)絡(luò)后,就有兩個網(wǎng)絡(luò)了。
到此這篇關(guān)于Docker之自定義網(wǎng)絡(luò)實現(xiàn)的文章就介紹到這了,更多相關(guān)Docker網(wǎng)絡(luò)內(nèi)容請搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
相關(guān)文章
在Docker中開發(fā)Java 8 Spring Boot應(yīng)用程序的方法
在本文中,我將向您展示如何使用Java 8開發(fā)和運行簡單的Spring Web應(yīng)用程序,而無需在本地計算機上安裝Java 8。感興趣的朋友跟隨小編一起看看吧2019-10-10docker 啟動具有多個網(wǎng)絡(luò)接口的容器的方法示例
這篇文章主要介紹了docker 啟動具有多個網(wǎng)絡(luò)接口的容器的方法示例,小編覺得挺不錯的,現(xiàn)在分享給大家,也給大家做個參考。一起跟隨小編過來看看吧2018-10-10Docker部署Django+Mysql+Redis+Gunicorn+Nginx的實現(xiàn)
這篇文章主要介紹了Docker 部署 Django+Mysql+Redis+Gunicorn+Nginx,文中通過示例代碼介紹的非常詳細,對大家的學習或者工作具有一定的參考學習價值,需要的朋友們下面隨著小編來一起學習學習吧2019-11-11Docker數(shù)據(jù)存儲之Bind mounts詳解
今天小編就為大家分享一篇關(guān)于Docker數(shù)據(jù)存儲之Bind mounts詳解,小編覺得內(nèi)容挺不錯的,現(xiàn)在分享給大家,具有很好的參考價值,需要的朋友一起跟隨小編來看看吧2019-02-02