docker 網絡的組成

2020-09-22 想學c的阿呆

docker網絡有四個不同的原生網絡組成分別是none 網絡,host網絡、user-defined網絡、bridge網絡。


Docker安裝的時候就會自動創建none host bridge網絡,但是user-degined是不會自動創建的

none網絡,其實就是相當於我們的一個沒有連接到外網的網絡,ta是一個封閉性網絡,這個網絡優點在於安全性高。

Host網絡:容器如果連接到docker host 網絡棧的話,那麼ta和host是共享網絡的。使用host網絡的優點在於性能上比較好、傳輸速率也快,但是也有一些限制,就是如果使用過的埠就不能夠重複使用了,不然會產生衝突的。

Bridge網絡:在docker安裝的時候會創建了一個名為docker0的bridge。在默認情況下容器時連接到這個docker0上。如果容器的使用bridge網絡,會創建一對veth pair 的網卡,一端連接在容器上,另一端時會連接到dockr0上,這個有點像三層交換,連接到兩個主機,這裡不要開啟路由功能,自帶的路由功能。

User-defined網絡。在這個裡涉及一個很想dhcp的東西,就是需要設置subnet,這個相當於dhcp的地址池,如果不設置這個,就會給容器下發ip地址,還不能給容器設置靜態的ip地址。兩個容器連接到同一個bridge的時候是可以相互進行通信的 ,但是 如果涉及到跨bridge網絡的時候就會出現報錯。但是可以通過設置跟那個網絡設備一樣,加個路由器,然後啟動轉發功能,這樣就能夠實現跨bridge之間的通信了


容器之間的通信有三個方式:ip、docker dns server joined

1、Ip通信就是通過指定同一個網絡的網卡就可以實現了,從上面的那個bridge的拓撲結構上看,我才應該是bridge網絡。

Docker dns server:docker dns server就是建立在user-defined的基礎上進行 使用這個網絡有一個優點就是可以避免在進行部署的時候無法分配IP位址,等部署以後再部署的尷尬。流程就是,首先創建名為1並且一個帶有地址池的容器,然後在創建連接到1容器的另外兩個容器就可以了

Joined網絡:joined網絡可以讓多個容器共享一個網卡。首先創建一個name=1的容器,然後將其他容器連接到這個1的容器上就可以了。(這使用的和docker dns server 有啥差距這裡是共享網卡的)

容器和外部連接分為外部訪問內部,容器訪問外部網絡。首先是外部訪問內部是需要做個nat轉換

外部訪問內部。做一個埠映射就可以了。

相關焦點

  • docker網絡的組成
    Docker網絡有四個不同的原生網絡組成分別是none 網絡,host網絡、user-defined網絡、bridge網絡。Docker安裝的時候就會自動創建none host bridge網絡,但是user-degined是不會自動創建的none網絡,其實就是相當於我們的一個沒有連接到外網的網絡,ta是一個封閉性網絡,這個網絡優點在於安全性高。Host網絡:容器如果連接到docker host 網絡棧的話,那麼ta和host是共享網絡的。
  • Docker核心組成
    總體而言Docker有以下優勢:快速,一致地交付您的應用程式響應式部署和擴展在同一硬體上運行更多的負載Docker的核心組成有哪些在 Docker 體系裡,有四個對象 ( Object ) 是我們不得不進行介紹的,因為幾乎所有 Docker 以及周邊生態的功能
  • Docker集群網絡的配置和使用
    在本文中,我們將創建一個基本的群集配置,並執行一些測試來說明docker的發現和連通性。在這個演示中,我們將創建一個Docker集群,它將由一個集群管理器和一個Worker組成。為了方便起見,它將在AWS上運行。體系架構我們的目標架構將由運行在不同EC2主機上的AWS AMI映像中的幾個Docker容器組成。
  • Docker網絡
    docker 網絡docker網絡新建docker網絡我們需要創建一個網絡環境,讓需要相互訪問的服務容器實例都加入到這個網絡環境中,這樣就可以實現,相互訪問調用。執行如下命令(創建一個docker網絡環境):9654B5; --tt-darkmode-color: FBF9FD; --tt-darkmode-bgcolor: FBF9FD; --tt-darkmode-bgcolor: 9654B5; --tt-darkmode-color:
  • 一起學習docker06-docker網絡
    一起學docker系列:一、Docker支持4種網絡模式Bridge(默認)--network默認網絡,Docker啟動後創建一個docker0網橋,默認創建的容器也是添加到這個網橋中;IP位址段是172.17.0.1/16 獨立名稱空間 docker0橋
  • docker鏡像的組成
    docker鏡像Docker鏡像是構建docker容器的基礎,容器是docker鏡像的運行的實例。構建鏡像只用三條命令就可以搭建一個很簡單的鏡像,from、copy、cmd。但是這個構建的出來的鏡像,沒有什麼用,也就是用來測試。
  • docker的鏡像組成
    Docker鏡像Docker鏡像是構建docker容器的基礎,容器是docker鏡像的運行的實例。構建鏡像只用三條命令就可以搭建一個很簡單的鏡像,from、copy、cmd。但是這個構建的出來的鏡像,沒有什麼用,也就是用來測試。
  • Docker:網絡模式詳解
    None:該模式關閉了容器的網絡功能。Bridge:此模式會為每一個容器分配、設置IP等,並將容器連接到一個docker0虛擬網橋,通過docker0網橋以及Iptables nat表配置與宿主機通信。以上都是不用動手的,真正需要配置的是自定義網絡。
  • docker-7:mac使用mac-docker-connector打通宿主機與docker網絡
    本地開發會用docker部署諸如rocketmq的中間件,但是有一個問題,rocketmq-broker註冊到namesrv上的ip是docker-ip,mac本地是不能直接訪問的,需要打通docker和mac本地的網絡,本文即解決此問題。
  • Docker:網絡模式詳解
    你可以使用以下docker network ls命令列出這些網絡:Docker內置這三個網絡,運行容器時,你可以使用該--network標誌來指定容器應連接到哪些網絡。該bridge網絡代表docker0所有Docker安裝中存在的網絡。
  • 和我一起學docker(一)——docker的網絡架構
    docker網絡從網絡角度看docker的技術架構,則是利用NetWork NameSpace 為底層實現的。NetWorkNameSpace可以在一個作業系統內創建多個網絡空間,並為每一個網絡空間創建獨立的網絡協議棧,系統管理員也可以通過ip工具來進行管理[root@docker1 ~] ip netns add example_net1[root@docker1 ~] ls /var/run/netns/example_net1
  • docker系列之容器網絡
    眾所周知,當你在創建docker時,會創建默認的三個網絡,可使用docker network ls查看網絡。但是,您可以通過創建overlay網絡來創建更大的網絡。docker_gwbridge 是由Docker在兩種不同情況下自動創建的本地橋接網絡。當您初始化或加入swarm時,Docker會創建docker_gwbridge 網絡,並將其用於不同主機上swarm節點之間的通信。
  • Docker 網絡模式詳解及容器間網絡通信
    通過 docker network connect 網絡名稱 容器名稱 為容器連接新的網絡模式。  通過 docker inspect 容器名稱|ID 再次查看容器的網絡信息,多增加了默認的 bridge。
  • docker之網絡連通
    隨機映射使用 -P 參數時,Docker 會隨機映射一個埠到內部容器開放的網絡埠示例:docker run -d -P nginx指定埠使用 -p 參數時,可以指定要映射的埠,並且在一個指定的埠上只可以綁定一個容器。
  • docker系列之Docker Componse網絡配置說明
    前言在前面的幾篇網絡配置中已經說明了docker容器的默認網絡和自定義網絡,那麼像Componse這種統一編排工具是如何創建網絡的呢,那咱們就來嘮嘮嗑。默認情況下,應用程式的網絡名稱基於Compose的工程名稱,而項目名稱基於docker-compose.yml所在目錄的名稱。如需修改工程名稱,可使用–project-name標識或COMPOSE_PORJECT_NAME環境變量。
  • 2020-09-07:Docker的四種網絡類型?
    橋接式網絡模式(默認)。容器的默認網絡模式,docker在安裝時會創建一個名為docker0的Linux bridge,在不指定--network的情況下,創建的容器都會默認掛到docker0上面。2.host(open)模式:使用–net =host指定。開放式網絡模式,和宿主機共享網絡。
  • Docker 添加容器到一個網絡
    要創建一個安全並且能夠協同運行的 Web 應用程式,你需要創建一個網絡。通過網絡,在默認情況下為容器提供了完全獨立的環境。在你第一次運行一個容器的時候,你可以將容器添加到一個網絡中。例如,我們希望運行一個容器來運行 PostgreSQL 資料庫,並且傳遞 --net=my_bridge 標記來到你新網絡的連接中,可以運行下面的命令:$ docker run -d --net=my_bridge --name db training/postgres如果你檢查你的
  • Docker入門-docker compose的使用
    它允許用戶通過一個單獨的docker-compose.yml模板文件來定義一組相關聯的應用容器為一個項目(project)。Compose中有兩個重要的概念:服務(service):一個應用的容器,實際上可以包括若干運行相同鏡像的容器實例。項目(project):由一組關聯的應用容器組成的一個完整業務單元。
  • 聊聊多個docker-compose之間的網絡通信
    在啟動後會自動創建默認的default網絡用於內部通信,但是隨著項目服務的增多,不可能所有的服務都定義在一個docker-compose文件中,為了便於維護,和解耦,一般根據業務類型和容器用途等,定義多個dcoker-compose文件來管理容器,比如基礎環境(redis、mq服務等)定義,公共業務(註冊中心,網關等)定義,普通業務服務等。
  • Docker 創建你自己的橋接網絡
    Docker 引擎能夠原生支持橋接網絡(bridge networks)和覆蓋網絡(overlay networks)。橋接網絡被限制用於一個獨立主機運行的 Docker 引擎。覆蓋網絡能夠包含有多個主機,這個有更多的高級特性。