docker網絡配置:bridge模式、host模式、container模式、none模式

在docker平臺裏有四種網絡模式,今天繼續分享一下它們的常用知識,進一步加深對docker技術的理解。

1、docker網絡模式分類

docker run創建Docker容器時,可以用--net選項指定容器的網絡模式,Docker主要有以下4種網絡模式。

  • bridge模式:--net=bridge 橋接模式(默認設置,自己創建也使用bridge 模式)
  • host模式:--net=host 和宿主即共享網絡
  • container模式:--net=container:NAME_or_ID 容器網絡連通!(很少用,侷限性很大!)
  • none模式:--net=none 不配置網絡

查看所有的docker網絡

命令: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

2、bridge 網橋模式

Docker安裝啓動後會在宿主主機上創建一個名爲 docker0 的虛擬網橋,處於七層網絡模型的數據鏈路層,後續每當我們創建一個新的docker容器,在不指定容器網絡模式的情況下,docker會通過 docker0 與主機的網絡連接,docker0 相當於網橋。

使用 bridge 模式新創建的容器,容器內部都會有一個虛擬網卡,名爲 eth0,容器之間可以通過容器內部的IP相互通信。

命令:docker run -d -name tomcat01 --net=bridge -p 8085:80 tomcat:latest
說明:

  • --net=bridge 可省略 ,-p 指定端口映射
  • 網橋默認 IP 範圍是一般都是 172.17.x.x

3、host 模式

如果指定的host模式容器不會擁有一個獨立network namesace,而是與宿主主機共用network namesace。也就說明容器本身不會有的網卡信息,而是使用宿主主機的網絡信息。容器除了網絡,其他比如文件系統、進程等依然都是隔離的。

說明:

  • --net=host 指定
  • 容器和宿主主機共享 Network namespace
  • host模式因爲和宿主主機共享network namespace,會有可能出現端口衝突的情況。

4、container模式

container模式和host模式很類似,host模式和宿主主機共享network namespace;container模式和指定的容器共享,兩者之間除了網絡共享(網卡、主機名、IP 地址),其他方面還是隔離的。

命令:docker run -d -name tomcat02 --net=container:name/id -p 8000:80 tomcat:latest
說明:

  • –-net={容器id 或容器name} 指定
  • 當前容器和另外一個容器共享 Network namespace

5、none模式

如果dockers容器指定的網絡模式爲none,該容器沒有辦法聯網,外界也無法訪問它,可以用來本次測試。

命令:docker run -d -name tomcat02 --net=none -p 8000:80 tomcat:latest
說明:

  • --net=none 指定
  • 容器有獨立的Network namespace,但並沒有對其進行任何網絡設置,如果需要的話,需要自定義配置網絡

Docker 網絡橋接模式和 Host 模式的區別

首先,我們需要了解一下 Docker 的兩種網絡模式之間的區別。在橋接網絡模式下,Docker 將爲每個容器創建一個獨立的網絡命名空間,併爲容器分配一個|P 地址。而在 Host 網絡模式下,容器將直接使用主機的網絡棧,與主機共享網絡接口和 IP 地址,這意味着容器可以直接訪問主機上的所有網絡服務,同時也會導致容器與主機網絡之間的隔離性降低。

Docker 網絡橋接改 Host

在使用 Docker 運行容器時,經常會涉及到網絡配置。默認情況下,Docker 使用橋接網絡模式來爲容器提供網絡連接。但有時候,我們可能需要將容器直接連接到主機的網絡,這時就需要將 Docker 網絡模式改爲 Host 模式。在本文中,我們將介紹如何通過改變 Docker 網絡橋接模式爲 Host 模式來實現容器直接連接到主機網絡的配置。

Docker 容器不能直接修改已創建的網絡模式爲 host。但是,你可以通過以下步驟來實現你的需求:

1. 停止當前運行的容器。
2. 刪除原有的容器。
3. 重新創建並指定網絡模式爲 host。

以下是一些可能的解決方案:

解決方案1:使用命令行

# 停止當前運行的容器
docker stop <container_id>
 
# 刪除原有的容器
docker rm <container_id>
 
# 重新創建並指定網絡模式爲 host
docker run --net=host --name=<container_name> <image_name>

解決方案2:使用Docker Compose
如果你使用Docker Compose來管理你的容器,你可以在你的docker-compose.yml文件中更改網絡模式,然後重新創建你的服務。

version: '3'
services:
  your_service:
    image: your_image
    network_mode: host

然後運行以下命令來重新創建服務:

docker-compose up -d

注意:使用 host 網絡模式的容器將會使用宿主機的網絡,這意味着容器的網絡配置和DNS設置將與宿主機相同。這可能會導致網絡配置衝突,因此在使用 host 網絡模式前,請確保這是你想要的行爲。

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章