docker修改容器網(wǎng)絡(luò)舉例詳解
1.docker網(wǎng)絡(luò)模式分類
docker run創(chuàng)建Docker容器時(shí),可以用--net選項(xiàng)指定容器的網(wǎng)絡(luò)模式,Docker主要有以下4種網(wǎng)絡(luò)模式。
- bridge模式:--net=bridge 橋接模式(默認(rèn)設(shè)置,自己創(chuàng)建也使用bridge 模式)
- host模式:--net=host 和宿主即共享網(wǎng)絡(luò)
- container模式:--net=container:NAME_or_ID 容器網(wǎng)絡(luò)連通!(很少用,局限性很大!)
- none模式:--net=none 不配置網(wǎng)絡(luò)
2.查詢所有網(wǎng)絡(luò)
命令:docker network ls
[root@iZwz9535z41cmgcpkm7i81Z ~]# docker network ls NETWORK ID NAME DRIVER SCOPE 8ddb7e9846c6 bridge bridge local 48e785b7efb3 host host local 7e07c5b5ae34 none null local
bridge 網(wǎng)橋模式
Docker安裝啟動(dòng)后會(huì)在宿主主機(jī)上創(chuàng)建一個(gè)名為 docker0 的虛擬網(wǎng)橋,處于七層網(wǎng)絡(luò)模型的數(shù)據(jù)鏈路層,后續(xù)每當(dāng)我們創(chuàng)建一個(gè)新的docker容器,在不指定容器網(wǎng)絡(luò)模式的情況下,docker會(huì)通過(guò) docker0 與主機(jī)的網(wǎng)絡(luò)連接,docker0 相當(dāng)于網(wǎng)橋。
使用 bridge 模式新創(chuàng)建的容器,容器內(nèi)部都會(huì)有一個(gè)虛擬網(wǎng)卡,名為 eth0,容器之間可以通過(guò)容器內(nèi)部的IP相互通信。
命令:docker run -d -name tomcat01 --net=bridge -p 8085:80 tomcat:latest
說(shuō)明:
- --net=bridge 可省略 ,-p 指定端口映射
- 網(wǎng)橋默認(rèn) IP 范圍是一般都是 172.17.x.x
host 模式
如果指定的host模式容器不會(huì)擁有一個(gè)獨(dú)立network namesace,而是與宿主主機(jī)共用network namesace。也就說(shuō)明容器本身不會(huì)有的網(wǎng)卡信息,而是使用宿主主機(jī)的網(wǎng)絡(luò)信息。容器除了網(wǎng)絡(luò),其他比如文件系統(tǒng)、進(jìn)程等依然都是隔離的。
說(shuō)明:
- --net=host 指定
- 容器和宿主主機(jī)共享 Network namespace
- host模式因?yàn)楹退拗髦鳈C(jī)共享network namespace,會(huì)有可能出現(xiàn)端口沖突的情況。
container模式
container模式和host模式很類似,host模式和宿主主機(jī)共享network namespace;container模式和指定的容器共享,兩者之間除了網(wǎng)絡(luò)共享(網(wǎng)卡、主機(jī)名、IP 地址),其他方面還是隔離的。
命令:docker run -d -name tomcat02 --net=container:name/id -p 8000:80 tomcat:latest
說(shuō)明:
- –-net={容器id 或容器name} 指定
- 當(dāng)前容器和另外一個(gè)容器共享 Network namespace
none模式
如果dockers容器指定的網(wǎng)絡(luò)模式為none,該容器沒(méi)有辦法聯(lián)網(wǎng),外界也無(wú)法訪問(wèn)它,可以用來(lái)本次測(cè)試。
命令:docker run -d -name tomcat02 --net=none -p 8000:80 tomcat:latest
說(shuō)明:
- --net=none 指定
- 容器有獨(dú)立的Network namespace,但并沒(méi)有對(duì)其進(jìn)行任何網(wǎng)絡(luò)設(shè)置,如果需要的話,需要自定義配置網(wǎng)絡(luò)
更改網(wǎng)絡(luò)
###解除容器綁定的網(wǎng)絡(luò) 網(wǎng)絡(luò)名詞mynetwork 容器名稱 lnmp [root@lnmp tp6cms]# docker network disconnect mynetwork lnmp ##刪除原先的網(wǎng)絡(luò) [root@lnmp tp6cms]# docker network rm mynetwork ##重新創(chuàng)建容器網(wǎng)絡(luò) [root@lnmp tp6cms]# docker network create --subnet=192.168.222.0/24 mynetwork 7d40e0be1fcade91f8109a54a05bf0f012584e0bbb9449bec5335db247efd0be ##為容器重新指定網(wǎng)絡(luò) [root@lnmp tp6cms]# docker network connect mynetwork lnmp ##重新啟動(dòng)容器 [root@lnmp tp6cms]# docker container restart lnmp
Docker 網(wǎng)絡(luò)橋接模式和 Host 模式的區(qū)別
首先,我們需要了解一下 Docker 的兩種網(wǎng)絡(luò)模式之間的區(qū)別。在橋接網(wǎng)絡(luò)模式下,Docker 將為每個(gè)容器創(chuàng)建一個(gè)獨(dú)立的網(wǎng)絡(luò)命名空間,并為容器分配一個(gè)|P 地址。而在 Host 網(wǎng)絡(luò)模式下,容器將直接使用主機(jī)的網(wǎng)絡(luò)棧,與主機(jī)共享網(wǎng)絡(luò)接口和 IP 地址,這意味著容器可以直接訪問(wèn)主機(jī)上的所有網(wǎng)絡(luò)服務(wù),同時(shí)也會(huì)導(dǎo)致容器與主機(jī)網(wǎng)絡(luò)之間的隔離性降低。
Docker 網(wǎng)絡(luò)橋接改 Host
在使用 Docker 運(yùn)行容器時(shí),經(jīng)常會(huì)涉及到網(wǎng)絡(luò)配置。默認(rèn)情況下,Docker 使用橋接網(wǎng)絡(luò)模式來(lái)為容器提供網(wǎng)絡(luò)連接。但有時(shí)候,我們可能需要將容器直接連接到主機(jī)的網(wǎng)絡(luò),這時(shí)就需要將 Docker 網(wǎng)絡(luò)模式改為 Host 模式。在本文中,我們將介紹如何通過(guò)改變 Docker 網(wǎng)絡(luò)橋接模式為 Host 模式來(lái)實(shí)現(xiàn)容器直接連接到主機(jī)網(wǎng)絡(luò)的配置。
Docker 容器不能直接修改已創(chuàng)建的網(wǎng)絡(luò)模式為 host。但是,你可以通過(guò)以下步驟來(lái)實(shí)現(xiàn)你的需求:
1. 停止當(dāng)前運(yùn)行的容器。
2. 刪除原有的容器。
3. 重新創(chuàng)建并指定網(wǎng)絡(luò)模式為 host。
以下是一些可能的解決方案:
解決方案1:使用命令行
# 停止當(dāng)前運(yùn)行的容器 docker stop <container_id> # 刪除原有的容器 docker rm <container_id> # 重新創(chuàng)建并指定網(wǎng)絡(luò)模式為 host docker run --net=host --name=<container_name> <image_name>
解決方案2:使用Docker Compose
如果你使用Docker Compose來(lái)管理你的容器,你可以在你的docker-compose.yml文件中更改網(wǎng)絡(luò)模式,然后重新創(chuàng)建你的服務(wù)。
version: '3' services: your_service: image: your_image network_mode: host
然后運(yùn)行以下命令來(lái)重新創(chuàng)建服務(wù):
docker-compose up -d
注意:使用 host 網(wǎng)絡(luò)模式的容器將會(huì)使用宿主機(jī)的網(wǎng)絡(luò),這意味著容器的網(wǎng)絡(luò)配置和DNS設(shè)置將與宿主機(jī)相同。這可能會(huì)導(dǎo)致網(wǎng)絡(luò)配置沖突,因此在使用 host 網(wǎng)絡(luò)模式前,請(qǐng)確保這是你想要的行為。
總結(jié)
到此這篇關(guān)于docker修改容器網(wǎng)絡(luò)的文章就介紹到這了,更多相關(guān)docker修改容器網(wǎng)絡(luò)內(nèi)容請(qǐng)搜索腳本之家以前的文章或繼續(xù)瀏覽下面的相關(guān)文章希望大家以后多多支持腳本之家!
- Docker容器網(wǎng)絡(luò)配置全攻略之橋接、Host、container詳解
- Docker容器網(wǎng)絡(luò)互聯(lián)的項(xiàng)目實(shí)踐
- Docker容器網(wǎng)絡(luò)地址的創(chuàng)建修改
- Docker容器網(wǎng)絡(luò)基礎(chǔ)概述
- Docker容器網(wǎng)絡(luò)更改的實(shí)現(xiàn)
- docker 容器網(wǎng)絡(luò)模式詳解
- Docker容器網(wǎng)絡(luò)端口配置過(guò)程詳解
- docker之點(diǎn)到點(diǎn)的容器網(wǎng)絡(luò)的配置
- Docker中的容器網(wǎng)絡(luò)以及其配置說(shuō)明
相關(guān)文章
詳解使用Docker搭建Java Web運(yùn)行環(huán)境
本篇文章主要介紹了使用Docker搭建Java Web運(yùn)行環(huán)境,現(xiàn)在分享給大家,也給大家做個(gè)參考。感興趣的小伙伴們可以參考一下。2016-11-11Docker本地鏡像發(fā)布到阿里云的實(shí)現(xiàn)
本文主要介紹了Docker本地鏡像發(fā)布到阿里云的實(shí)現(xiàn),文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07docker-compose up -d和docker-compose up -
本文主要介紹了docker-compose up -d和docker-compose up --build的區(qū)別,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友們下面隨著小編來(lái)一起學(xué)習(xí)學(xué)習(xí)吧2023-07-07idea使用docker插件一鍵部署項(xiàng)目的操作方法
這篇文章主要介紹了idea使用docker插件一鍵部署項(xiàng)目的操作方法,本文通過(guò)圖文實(shí)例相結(jié)合給大家介紹的非常詳細(xì),感興趣的朋友一起看看吧2025-04-04