国产 无码 综合区,色欲AV无码国产永久播放,无码天堂亚洲国产AV,国产日韩欧美女同一区二区

Docker容器網(wǎng)絡(七)

這篇具有很好參考價值的文章主要介紹了Docker容器網(wǎng)絡(七)。希望對大家有所幫助。如果存在錯誤或未考慮完全的地方,請大家不吝賜教,您也可以點擊"舉報違法"按鈕提交疑問。

概述

在應用程序和網(wǎng)絡之間是 Docker 網(wǎng)絡,被親切地稱為容器網(wǎng)絡模型 或 CNM(Container Network Model)。是 CNM 為您的 Docker 容器代理連接性,并且還抽象出網(wǎng)絡中常見的多樣性和復雜性。結果是可移植性,它來自 CNM 強大的網(wǎng)絡驅(qū)動程序。這些是 Docker 引擎、Swarm 和 UCP 的可插拔接口,提供了多主機網(wǎng)絡、網(wǎng)絡層加密和服務發(fā)現(xiàn)等特殊功能。

每個驅(qū)動程序都提供權衡,并根據(jù)用例具有不同的優(yōu)勢。Docker Engine 附帶了內(nèi)置的網(wǎng)絡驅(qū)動程序,也有網(wǎng)絡供應商和社區(qū)提供的插件 網(wǎng)絡驅(qū)動程序。最常用的內(nèi)置網(wǎng)絡驅(qū)動程序是bridge、overlay和macvlan、host、container、none

Docker 網(wǎng)橋驅(qū)動程序會自動在宿主機中安裝規(guī)則,使不同網(wǎng)橋網(wǎng)絡上的容器無法直接相互通信。

docker創(chuàng)建的默認網(wǎng)絡

當你安裝Docker后,它會自動創(chuàng)建三個network,你可以使用命令:docker network ls

Docker容器網(wǎng)絡(七)

從歷史上看,這三個network是Docker實現(xiàn)的一部分。當你運行一個container時,你可以用--net 標志去指定這個container運行在哪一種network上。這三種network你都可以使用。

這個bridgenetwork 代表所有安裝了Docker的主機的docker0 network。除非使用docker run --set=<NETWORK>選項指定一個其它的network,否則Docker daemon會默認使用這個network連接contrainer。你可以使用系統(tǒng)的ifconfig命令查看主機的network stack中的docker0:

Docker容器網(wǎng)絡(七)

查看當前運行容器的網(wǎng)絡

可以使用命令docker network inspect nginx 查看nginx的網(wǎng)絡以及容器信息

找到NetworkSettings→Network

"Networks": {
                "testnet": {
                    "IPAMConfig": null,
                    "Links": null,
                    "Aliases": [
                        "nginx",
                        "f15d7fb1dc5d"
                    ],
                    "NetworkID": "71e578417fe3185720271d46fa7a5d97bf0c8acaf36f71f05d225c7fbe45158d",
                    "EndpointID": "f9114e7e10ecefeea6a148814dad3c3e195e972d5a2874666f4f4461acb160ae",
                    "Gateway": "172.18.0.1",
                    "IPAddress": "172.18.0.4",
                    "IPPrefixLen": 16,
                    "IPv6Gateway": "",
                    "GlobalIPv6Address": "",
                    "GlobalIPv6PrefixLen": 0,
                    "MacAddress": "02:42:ac:12:00:04",
                    "DriverOpts": null
                }
}

我使用的是自定義的網(wǎng)絡testnet。

上面是 docker network inspect命令根據(jù)給定的network回顯的這個network已連接的容器和它的一些網(wǎng)絡資源。在這個默認的network中的container可以利用IP地址相互通信。在默認的bridgenetwork中Docker不支持自動的服務發(fā)現(xiàn)。如果你的container想要通過其他container的name在這個默認的bridgenetwork中通行,你必須通過docker run --linke選項來實現(xiàn)。

常用的網(wǎng)絡驅(qū)動程序

自定義的network

你可以創(chuàng)建屬于你的自定義network來更好的隔離container。為了創(chuàng)建這些network,Docker提供了一些默認的network drivers。你可以創(chuàng)建一個新的bridge network或者overlay network。你也可以創(chuàng)建一個network plugin或是一個remote network

你可以創(chuàng)建多個網(wǎng)絡??梢蕴砑右粋€container到多個網(wǎng)絡。container只能在這個網(wǎng)絡中通行不能跨越這個網(wǎng)絡。一個container可以附著到兩個network中,并分別與這兩個network中的container成員通信。

運行容器是可以通過 —network testnet指定你的容器使用testnet網(wǎng)絡,更好的和其他容器隔離

bridge(橋接網(wǎng)絡驅(qū)動程序)

默認網(wǎng)絡驅(qū)動程序。如果您未指定驅(qū)動程序,則這是您正在創(chuàng)建的網(wǎng)絡類型。當您的應用程序在需要通信的獨立容器中運行時,通常會使用橋接網(wǎng)絡。

bridge驅(qū)動程序提供了基于 Linux Bridge 的特定于 Linux 的橋接實現(xiàn)。

bridge 網(wǎng)絡驅(qū)動程序是我們列表中的第一個驅(qū)動程序。它易于理解、易于使用且易于排除故障,這使其成為開發(fā)人員和 Docker 新手的良好網(wǎng)絡選擇。bridge驅(qū)動程序在主機內(nèi)部創(chuàng)建一個專用網(wǎng)絡,以便該網(wǎng)絡上的容器可以通信。通過將端口暴露給容器來授予外部訪問權限。Docker 通過管理阻止不同 Docker 網(wǎng)絡之間連接的規(guī)則來保護網(wǎng)絡。

Docker 引擎創(chuàng)建了必要的 Linux 網(wǎng)橋、內(nèi)部接口、iptables 規(guī)則和主機路由,以使這種連接成為可能。在下面突出顯示的示例中,創(chuàng)建了一個 Docker 橋接網(wǎng)絡并附加了兩個容器。在沒有額外配置的情況下,Docker 引擎進行必要的接線,為容器提供服務發(fā)現(xiàn),并配置安全規(guī)則以防止與其他網(wǎng)絡通信。內(nèi)置 IPAM 驅(qū)動程序為容器接口提供來自橋接網(wǎng)絡子網(wǎng)的私有 IP 地址。

在以下示例中,我們使用了一個pets由 awebdb容器組成的虛構應用程序。隨意在您自己的 UCP 或 Swarm 集群上試用它。您的應用程序?qū)⒖稍?``:8000.

docker network create -d bridge mybridge docker run -d --net mybridge --name db redis docker run -d --net mybridge -e DB=db -p 8000:5000 --name web chrch/web

Docker容器網(wǎng)絡(七)

我們的應用程序現(xiàn)在在我們的主機上的 8000 端口上提供服務。Docker 橋允許通過其容器名稱web進行通信。db網(wǎng)橋驅(qū)動程序會自動為我們進行服務發(fā)現(xiàn),因為它們位于同一網(wǎng)絡上。Linux 網(wǎng)橋之間的所有端口映射、安全規(guī)則和管道工作都由網(wǎng)絡驅(qū)動程序為我們處理,因為容器在集群中被調(diào)度和重新調(diào)度。

網(wǎng)橋驅(qū)動程序是本地范圍驅(qū)動程序,這意味著它僅在單個主機上提供服務發(fā)現(xiàn)、IPAM 和連接。多主機服務發(fā)現(xiàn)需要一個可以將容器映射到其主機位置的外部解決方案。

overlay(覆蓋網(wǎng)絡驅(qū)動程序)

Overlay 網(wǎng)絡將多個 Docker 守護進程連接在一起,使 swarm 服務能夠相互通信。您還可以使用覆蓋網(wǎng)絡來促進 swarm 服務和獨立容器之間的通信,或者不同 Docker 守護程序上的兩個獨立容器之間的通信。這種策略消除了在這些容器之間進行操作系統(tǒng)級路由的需要。

內(nèi)置的 Dockeroverlay網(wǎng)絡驅(qū)動程序從根本上簡化了多主機網(wǎng)絡中的許多復雜性。它是一個swarm 范圍驅(qū)動程序,這意味著它跨整個 Swarm 或 UCP 集群而不是單個主機運行。使用該overlay驅(qū)動程序,多主機網(wǎng)絡是 Docker 內(nèi)部的一等公民,無需外部配置或組件。內(nèi)置 IPAM、服務發(fā)現(xiàn)、多主機連接、加密和負載平衡。為了進行控制,overlay驅(qū)動程序使用加密的 Swarm 控制平面以低收斂時間管理大規(guī)模集群。

overlay驅(qū)動程序使用行業(yè)標準的 VXLAN 數(shù)據(jù)平面,將容器網(wǎng)絡與底層物理網(wǎng)絡(底層)分離。這具有跨各種云和本地網(wǎng)絡提供最大可移植性的優(yōu)勢。網(wǎng)絡策略、可見性和安全性通過 Docker 通用控制平面 (UCP) 進行集中控制。

macvlan

Macvlan 網(wǎng)絡允許您將 MAC 地址分配給容器,使其在您的網(wǎng)絡上顯示為物理設備。Docker 守護進程通過它們的 MAC 地址將流量路由到容器。macvlan 在處理期望直接連接到物理網(wǎng)絡而不是通過 Docker 主機的網(wǎng)絡堆棧路由的遺留應用程序時,使用驅(qū)動程序有時是最佳選擇。

macvlan驅(qū)動程序是最新的內(nèi)置網(wǎng)絡驅(qū)動程序,并提供了幾個獨特的特性。它是一個非常輕量級的驅(qū)動程序,因為它不使用任何 Linux 橋接或端口映射,而是將容器接口直接連接到主機接口。容器使用外部網(wǎng)絡子網(wǎng)上的可路由 IP 地址進行尋址。

由于 IP 地址可路由,容器直接與 Swarm 集群外部的資源通信,無需使用 NAT 和端口映射。這有助于網(wǎng)絡可見性和故障排除。此外,容器和主機接口之間的直接流量路徑有助于減少延遲。macvlan是按主機配置的本地范圍網(wǎng)絡驅(qū)動程序。這樣一來,MACVLAN 與外部網(wǎng)絡之間的依賴關系就更加嚴格,這既是約束,也是不同于overlayor的優(yōu)勢bridge。

macvlan驅(qū)動程序使用父接口的概念。該接口可以是主機接口,例如eth0子接口,甚至可以是綁定的主機適配器,它將以太網(wǎng)接口捆綁到單個邏輯接口中。在 MACVLAN 網(wǎng)絡配置期間需要來自外部網(wǎng)絡的網(wǎng)關地址,因為 MACVLAN 網(wǎng)絡是從容器到網(wǎng)絡網(wǎng)關的 L2 段。像所有 Docker 網(wǎng)絡一樣,MACVLAN 網(wǎng)絡是相互分割的——提供網(wǎng)絡內(nèi)的訪問,而不是網(wǎng)絡之間的訪問。

驅(qū)動程序可以通過macvlan不同的方式進行配置,以達到不同的效果。在下面的示例中,我們創(chuàng)建了兩個連接到不同子接口的 MACVLAN 網(wǎng)絡。這種類型的配置可用于通過主機接口將多個 L2 VLAN 直接擴展到容器。VLAN 默認網(wǎng)關存在于外部網(wǎng)絡中。

Docker容器網(wǎng)絡(七)

dbweb容器連接到不同的 MACVLAN 網(wǎng)絡。每個容器都駐留在其各自的外部網(wǎng)絡上,并具有從該網(wǎng)絡提供的外部 IP。使用這種設計,操作員可以在 L2 的主機和分段容器之外控制網(wǎng)絡策略。通過在同一個 MACVLAN 網(wǎng)絡上配置容器,也可以將它們放置在同一個 VLAN 中。這只是顯示了每個網(wǎng)絡驅(qū)動程序提供的靈活性。

host

容器和宿主機共享 Network namespace

如果啟動容器的時候使用 host 模式,那么這個容器將不會獲得一個獨立的 Network Namespace,而是和宿主機共用一個 Network Namespace。容器將不會虛擬出自己的網(wǎng)卡,配置自己的 IP 等,而是使用宿主機的 IP 和端口。但是,容器的其他方面,如文件系統(tǒng)、進程列表等還是和宿主機隔離的。

使用 host 模式的容器可以直接使用宿主機的 IP 地址與外界通信,容器內(nèi)部的服務端口也可以使用宿主機的端口,不需要進行 NAT,host 最大的優(yōu)勢就是網(wǎng)絡性能比較好,但是 docker host 上已經(jīng)使用的端口就不能再用了,網(wǎng)絡的隔離性不好。

Docker容器網(wǎng)絡(七)

container

容器和另外一個容器共享 Network namespace

命令:-network container:NAME_OR_ID

這個模式指定新創(chuàng)建的容器和已經(jīng)存在的一個容器共享一個 Network Namespace,而不是和宿主機共享。新創(chuàng)建的容器不會創(chuàng)建自己的網(wǎng)卡,配置自己的 IP,而是和一個指定的容器共享 IP、端口范圍等。同樣,兩個容器除了網(wǎng)絡方面,其他的如文件系統(tǒng)、進程列表等還是隔離的。兩個容器的進程可以通過 lo 網(wǎng)卡設備通信。

none

對于這個容器,禁用所有網(wǎng)絡。通常與自定義網(wǎng)絡驅(qū)動程序一起使用

使用 none 模式,Docker 容器擁有自己的 Network Namespace,但是,并不為 Docker 容器進行任何網(wǎng)絡配置。也就是說,這個 Docker 容器沒有網(wǎng)卡、IP、路由等信息。需要我們自己為 Docker 容器添加網(wǎng)卡、配置 IP 等。

這種網(wǎng)絡模式下容器只有 lo 回環(huán)網(wǎng)絡,沒有其他網(wǎng)卡。none 模式可以在容器創(chuàng)建時通過–network none 來指定。這種類型的網(wǎng)絡沒有辦法聯(lián)網(wǎng),封閉的網(wǎng)絡能很好的保證容器的安全性。

域名系統(tǒng)

在 Docker Desktop 內(nèi)部有多個 DNS 服務器:

Docker容器網(wǎng)絡(七)

來自容器的 DNS 請求首先由內(nèi)部的服務器處理,該服務器dockerd識別同一內(nèi)部網(wǎng)絡上其他容器的名稱。這允許容器在不知道其內(nèi)部 IP 地址的情況下輕松地相互通信。例如,圖中有 3 個容器:“nginx”、“golang”和“postgres”,取自 docker /awesome-compose 示例。每次啟動應用程序時,內(nèi)部 IP 地址可能會有所不同,但由于內(nèi)部的 DNS 服務器,容器仍然可以通過人類可讀的名稱輕松地相互連接。dockerd

所有其他名稱查找都發(fā)送到CoreDNS(來自CNCF)。然后根據(jù)域名將請求轉發(fā)到主機上的兩個不同 DNS 服務器之一。域是特殊的,包括解析為當前主機的有效 IP 地址docker.internal的 DNS 名稱。host.docker.internal盡管我們更喜歡一切都完全容器化,但有時將應用程序的一部分作為普通的舊主機服務運行是有意義的。特殊名稱host.docker.internal允許容器以可移植的方式聯(lián)系這些主機服務,而無需擔心 IP 地址的硬編碼。

主機上的第二個 DNS 服務器通過標準 OS 系統(tǒng)庫來處理所有其他請求。這樣可以確保,如果名稱在開發(fā)人員的 Web 瀏覽器中正確解析,它也將在開發(fā)人員的容器中正確解析。這在復雜的設置中尤為重要,例如圖中所示,其中一些請求通過公司 VPN 發(fā)送(例如internal.registry.mycompany),而其他請求則發(fā)送到常規(guī) Internet(例如docker.com)。

總結

  • 當您需要多個容器在同一個 Docker 主機上進行通信時,用戶定義的bridge橋接網(wǎng)絡是最佳選擇。

  • 當網(wǎng)絡堆棧不應該與 Docker 主機隔離時,主機網(wǎng)絡是最好的,但您希望容器的其他方面被隔離。

  • 當您需要在不同 Docker 主機上運行的容器進行通信時,或者當多個應用程序使用 swarm 服務一起工作時,overlay覆蓋網(wǎng)絡是最佳選擇。

  • 當您從 VM 設置遷移或需要容器看起來像網(wǎng)絡上的物理主機時,Macvlan 網(wǎng)絡是最佳選擇,每個主機都有唯一的 MAC 地址。

  • 第三方網(wǎng)絡插件

    允許您將 Docker 與專門的網(wǎng)絡堆棧集成。


更多好文章也可關注以下網(wǎng)站

本文作者:Java技術債務
原文鏈接:https://cuizb.top/myblog/article/1666607410
版權聲明: 本博客所有文章除特別聲明外,均采用 CC BY 3.0 CN協(xié)議進行許可。轉載請署名作者且注明文章出處。


當然也可以點擊下面公眾號進行掃描關注公眾號,及時收到文章推薦文章來源地址http://www.zghlxwxcb.cn/news/detail-453789.html

到了這里,關于Docker容器網(wǎng)絡(七)的文章就介紹完了。如果您還想了解更多內(nèi)容,請在右上角搜索TOY模板網(wǎng)以前的文章或繼續(xù)瀏覽下面的相關文章,希望大家以后多多支持TOY模板網(wǎng)!

本文來自互聯(lián)網(wǎng)用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。如若轉載,請注明出處: 如若內(nèi)容造成侵權/違法違規(guī)/事實不符,請點擊違法舉報進行投訴反饋,一經(jīng)查實,立即刪除!

領支付寶紅包贊助服務器費用

相關文章

  • 實現(xiàn)Web頁面與桌面應用程序之間的交互
  • 【容器化應用程序設計和開發(fā)】2.5 容器化應用程序的安全性和合規(guī)性考慮

    【容器化應用程序設計和開發(fā)】2.5 容器化應用程序的安全性和合規(guī)性考慮

    往期回顧: 第一章:【云原生概念和技術】 第二章:2.1 容器化基礎知識和Docker容器 第二章:2.2 Dockerfile 的編寫和最佳實踐 第二章:2.3 容器編排和Kubernetes調(diào)度 第二章:2.4 容器網(wǎng)絡和存儲 容器化應用程序是將應用程序和其依賴項打包到一個獨立的、可移植的容器中,以便在

    2024年02月15日
    瀏覽(22)
  • 【物聯(lián)網(wǎng)】物聯(lián)網(wǎng)設備和應用程序涉及協(xié)議的概述

    【物聯(lián)網(wǎng)】物聯(lián)網(wǎng)設備和應用程序涉及協(xié)議的概述

    物聯(lián)網(wǎng)設備和應用程序涉及協(xié)議的概述。幫助澄清IoT層技術棧和頭對頭比較。 物聯(lián)網(wǎng)涵蓋了廣泛的行業(yè)和用例,從單一受限制的設備擴展到大量跨平臺部署嵌入式技術和實時連接的云系統(tǒng)。 將它們捆綁在一起是許多傳統(tǒng)和新興的通信協(xié)議,允許設備和服務器以新的,更互聯(lián)

    2024年01月18日
    瀏覽(49)
  • 阿里云和AWS之間的應用程序防火墻比較及選擇建議!

    阿里云和AWS之間的應用程序防火墻比較及選擇建議!

    對于大多數(shù)開發(fā)人員來說,托管在云中的 Web 應用程序或 REST API 是一種常見方案。但是,并非每個應用程序都具有相同的安全級別。將 Web 應用程序防火墻 (WAF) 添加到 Web 應用程序是提高安全性的有用方法。 在本文中,九河云將比較兩個基于云的 WAF 選項:阿里云提供的

    2024年01月24日
    瀏覽(27)
  • ODBC 在指定的DSN中,驅(qū)動程序和應用程序之間的體系結構不匹配

    ODBC 在指定的DSN中,驅(qū)動程序和應用程序之間的體系結構不匹配

    常規(guī)辦法就是64位或32位匹配,如果解決不了,往下看。 ↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓解決方案↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓↓ 解壓AccessDatabaseEngine_X64.exe,用orca編輯器打開AceRedist.

    2024年02月02日
    瀏覽(22)
  • 【容器化應用程序設計和開發(fā)】2.2 容器編排和Kubernetes調(diào)度

    往期回顧: 第一章:【云原生概念和技術】 第二章:2.1 容器化基礎知識和Docker容器 第二章:2.2 Dockerfile 的編寫和最佳實踐 容器編排是指自動化部署、管理和運行容器化應用程序的過程。Kubernetes 是一個流行的容器編排平臺,它提供了一種自動化的方式來創(chuàng)建、部署和管理容

    2024年02月03日
    瀏覽(27)
  • 移動應用架構新思路——WePY+小程序容器

    WePY(微信小程序開發(fā)框架)是一個基于組件化開發(fā)思想的微信小程序開發(fā)框架。它類似于Vue.js框架,通過封裝小程序原生的API,提供了更加簡潔、高效的開發(fā)方式。 WePY的主要特點包括: 組件化開發(fā):WePY將頁面拆分為多個組件,每個組件有自己的樣式、模板和邏輯。這種組

    2024年02月08日
    瀏覽(23)
  • 【基于容器的部署、擴展和管理】 3.2 基于容器的應用程序部署和升級

    往期回顧: 第一章:【云原生概念和技術】 第二章:【容器化應用程序設計和開發(fā)】 第三章:【3.1 容器編排系統(tǒng)和Kubernetes集群的構建】 基于容器的應用程序部署和升級通常涉及以下步驟: 創(chuàng)建一個容器鏡像 :首先,需要創(chuàng)建一個容器鏡像,該鏡像將包含應用程序的所有依

    2024年02月08日
    瀏覽(20)
  • 【OC】使用協(xié)議(Protocol)在Cocoa應用程序中實現(xiàn)視圖控制器之間的通信

    在Cocoa應用程序開發(fā)中,視圖控制器(ViewController)之間的通信是非常常見的需求。為了實現(xiàn)這種通信,我們可以使用協(xié)議(Protocol)來定義一個接口,然后讓視圖控制器遵循該協(xié)議并實現(xiàn)相應的方法。本文將介紹如何使用協(xié)議在Cocoa應用程序中實現(xiàn)視圖控制器之間的通信。 首

    2024年02月05日
    瀏覽(19)
  • 云計算與容器化技術:構建快速交付的應用程序

    作者:禪與計算機程序設計藝術 云計算是一種新的、高效、低成本的計算模式,它能夠幫助企業(yè)將核心業(yè)務線的關鍵應用部署在任意位置。云計算服務的范圍從存儲、網(wǎng)絡到計算都可以實現(xiàn)按需付費和彈性擴展。因此,云計算可以在滿足用戶需要的同時節(jié)省資源成本。 云計

    2024年02月14日
    瀏覽(14)

覺得文章有用就打賞一下文章作者

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

請作者喝杯咖啡吧~博客贊助

支付寶掃一掃領取紅包,優(yōu)惠每天領

二維碼1

領取紅包

二維碼2

領紅包