欧美bbbwbbbw肥妇,免费乱码人妻系列日韩,一级黄片

Docker 配置網(wǎng)絡(luò)使用bridge網(wǎng)絡(luò)的方法

 更新時(shí)間:2018年03月28日 09:59:27   作者:kikajack  
本篇文章主要介紹了Docker 配置網(wǎng)絡(luò)使用 bridge 網(wǎng)絡(luò)的方法,小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧

就網(wǎng)絡(luò)而言,橋接網(wǎng)絡(luò)(bridge network,也叫網(wǎng)橋)是一種鏈路層設(shè)備,用于轉(zhuǎn)發(fā)網(wǎng)段之間的流量。 bridge 可以是硬件設(shè)備或在主機(jī)內(nèi)核中運(yùn)行的軟件設(shè)備。

對(duì) Docker 而言,橋接網(wǎng)絡(luò)使用允許容器連接到同一個(gè)橋接網(wǎng)絡(luò)來通信的軟件網(wǎng)橋,同時(shí)提供與未連接到該橋接網(wǎng)絡(luò)的容器的隔離。Docker bridge 驅(qū)動(dòng)程序自動(dòng)在主機(jī)中安裝規(guī)則使不同橋接網(wǎng)絡(luò)上的容器不能直接相互通信。

橋接網(wǎng)絡(luò)用于在同一個(gè) Docker 守護(hù)進(jìn)程上運(yùn)行的容器通信。對(duì)于不同 Docker 守護(hù)進(jìn)程的容器,可以在操作系統(tǒng)層級(jí)管理路由或使用 overlay 網(wǎng)絡(luò)來實(shí)現(xiàn)通信。

啟動(dòng) Docker 時(shí),會(huì)自動(dòng)創(chuàng)建默認(rèn)的橋接網(wǎng)絡(luò),新啟動(dòng)的容器如果沒有特別指定都會(huì)連接到這個(gè)默認(rèn)橋接網(wǎng)絡(luò)。也可以創(chuàng)建用戶自定義的橋接網(wǎng)絡(luò),且用戶自定義的橋接網(wǎng)絡(luò)比默認(rèn)的優(yōu)先級(jí)要高。

1. 用戶自定義 bridge 和默認(rèn) bridge 的差別

1.1 用戶定義網(wǎng)橋提供更好的隔離和容器化應(yīng)用之間的互操作性

連接到同一個(gè)用戶自定義網(wǎng)橋的容器會(huì)自動(dòng)互相暴露所有端口,并且不會(huì)暴露到外部。這會(huì)讓容器化應(yīng)用之間的通信更方便,而不會(huì)意外開放進(jìn)入外部世界。

假設(shè)一個(gè)應(yīng)用包含 web 前端和數(shù)據(jù)庫后端。外部需要訪問前端(可能是 80 端口),但是只有前端需要訪問數(shù)據(jù)庫后端。使用用戶自定義網(wǎng)橋,只需要將前端的端口暴露到外部,數(shù)據(jù)庫應(yīng)用不需要開啟任何端口,因?yàn)?web 前端可以通過用戶自定義網(wǎng)橋直接訪問到。

如果在默認(rèn)網(wǎng)橋上運(yùn)行同一個(gè)應(yīng)用堆棧,需要同時(shí)打開 web 前端和數(shù)據(jù)庫后端的端口,每次都需要使用 -p 或 --publish 標(biāo)志。在意味著 Docker 主機(jī)需要通過其他方式來限制對(duì)數(shù)據(jù)庫后端端口的訪問。

1.2 用戶自定義 bridge 提供容器間自動(dòng) DNS 解析(automatic DNS resolution)

默認(rèn)網(wǎng)橋上的容器只能通過 IP 地址互相訪問,除非你使用 --link 選項(xiàng),這被認(rèn)為是遺留的。在用戶自定義網(wǎng)橋中,容器之間可以通過名字會(huì)別名互相訪問。

這里還是用上面的例子分析,web 前端和數(shù)據(jù)庫后端。如果容器稱為 web 和 db,web 容器可以連接到 db 上的 db 容器(the web container can connect to the db container at db),不管這個(gè)應(yīng)用堆棧運(yùn)行在哪個(gè) Docker 主機(jī)上。

如果在默認(rèn)網(wǎng)橋上運(yùn)行相同應(yīng)用堆棧,需要人工創(chuàng)建容器之間的連接(使用遺留的 --link)標(biāo)志。這些連接需要雙向創(chuàng)建,所以當(dāng)需要通信的容器個(gè)數(shù)大于 2 個(gè)時(shí)復(fù)雜度會(huì)呈指數(shù)增長(zhǎng)?;蛘?,你可以編輯容器內(nèi)的 /etc/hosts 文件,但這會(huì)產(chǎn)生難以調(diào)試的問題。

1.3 容器可以在運(yùn)行中與用戶自定義網(wǎng)絡(luò)連接和斷開

在一個(gè)容器的生命周期中,可以在容器運(yùn)行中將容器與用戶自定義網(wǎng)絡(luò)連接和斷開。要從默認(rèn)網(wǎng)橋中移除容器,需要停止容器并且通過不同的網(wǎng)絡(luò)選項(xiàng)重新創(chuàng)建。

1.4 每個(gè)用戶自定義網(wǎng)絡(luò)創(chuàng)建一個(gè)可配置的橋

如果你的容器使用默認(rèn)網(wǎng)橋,你可以配置它,但是所有容器都使用了相同設(shè)置,例如 MTU 和 iptables 規(guī)則。此外,對(duì)默認(rèn)網(wǎng)橋的配置發(fā)生在 Docker 之外,需要重啟 Docker。

用戶自定義網(wǎng)橋通過 docker network create 來創(chuàng)建和配置。如果應(yīng)用程序的不同分組有不同的網(wǎng)絡(luò)需求,可以獨(dú)立配置每個(gè)用戶自定義網(wǎng)橋,就像獨(dú)立創(chuàng)建一樣。

1.5 默認(rèn)網(wǎng)橋中連接的容器共享環(huán)境變量

最初,在兩個(gè)容器之間共享環(huán)境變量的唯一方法是使用 --link 標(biāo)志連接它們。用戶自定義網(wǎng)絡(luò)中無法使用這種類型的變量共享方式。然而,共享環(huán)境變量有更好的方式。一些想法:

  1. 多個(gè)容器可以使用 Docker volume 卷掛載用于共享信息的同一個(gè)文件或目錄。
  2. 可以通過 docker-compose 同時(shí)啟動(dòng)多個(gè)容器,compose 文件可以定義共享變量。
  3. 可以使用 swarm 服務(wù)代替獨(dú)立的容器,可以利用 swarm 的共享的 secrets 和 configs。

連接到同一個(gè)用戶自定義網(wǎng)橋的容器可以有效地將所有端口暴露給對(duì)方。 要使不同網(wǎng)絡(luò)上的容器或非 Docker 主機(jī)訪問到容器的端口,該端口必須使用 -p 或 --publish 標(biāo)志來發(fā)布。

2. 管理用戶自定義網(wǎng)橋

通過 docker network create 命令創(chuàng)建用戶自定義網(wǎng)橋:

$ docker network create my-net

可以指定子網(wǎng) subnet,IP 地址段,網(wǎng)關(guān)和其他選項(xiàng)。查看 docker network create 命令參考手冊(cè) 或通過 docker network create --help 命令查看詳情。

通過 docker network rm 命令刪除用戶自定義的網(wǎng)橋。如果容器仍然連接到網(wǎng)絡(luò),需要先斷開連接才能刪除這個(gè)網(wǎng)橋。

$ docker network rm my-net

到達(dá)發(fā)生了什么?

當(dāng)你創(chuàng)建或刪除用戶自定義網(wǎng)橋,或?qū)⑷萜鲝挠脩糇远x網(wǎng)橋連接或斷開,Docker 使用特定于操作系統(tǒng)的工具來管理底層網(wǎng)絡(luò)架構(gòu)(例如增刪網(wǎng)橋設(shè)備或配置 Linux 上的 iptables 規(guī)則)。這些是具體的實(shí)現(xiàn)細(xì)節(jié)。讓 Docker 替你管理你的用戶自定義網(wǎng)橋就好了。

3. 連接容器到用戶自定義網(wǎng)橋

創(chuàng)建新容器時(shí)可以指定一個(gè)或多個(gè) --network 標(biāo)志。下面的例子將 Nginx 容器連接到 my-net 網(wǎng)絡(luò)。同時(shí)還將容器的 80 端口發(fā)布到 Docker 主機(jī)的 8080 端口,這樣外部的客戶端就可以訪問這個(gè)端口了。任何其他連接到 my-net 的網(wǎng)絡(luò)的容器都可以訪問這個(gè)網(wǎng)絡(luò)中其他容器的所有端口,反之亦然。

$ docker create --name my-nginx \
 --network my-net \
 --publish 8080:80 \
 nginx:latest

使用 docker network connect 命令將運(yùn)行中的容器連接到已經(jīng)存在的用戶自定義網(wǎng)橋。下面的命令將運(yùn)行中的 my-nginx 容器連接到已經(jīng)存在的 my-net 網(wǎng)絡(luò):

$ docker network connect my-net my-nginx

4. 斷開容器到用戶自定義網(wǎng)絡(luò)的連接

使用 docker network disconnect 命令斷開運(yùn)行中的容器到一個(gè)用戶自定義網(wǎng)橋的連接。下面的命令將會(huì)斷開 my-nginx 容器到 my-net 網(wǎng)絡(luò)的連接:

$ docker network disconnect my-net my-nginx

5. 使用 IPv6

如果需要 Docker 容器支持 IPv6,則需要在創(chuàng)建任何 IPv6 網(wǎng)絡(luò)或?yàn)槿萜鞣峙?IPv6 地址之前,在 Docker 守護(hù)進(jìn)程中開啟選項(xiàng) 并重新加載配置。

創(chuàng)建網(wǎng)絡(luò)時(shí)指定 --ipv6 標(biāo)志可以開啟 IPv6。默認(rèn)網(wǎng)橋上不能有選擇地禁用 IPv6。

6. 開啟容器到外部的訪問

默認(rèn)情況下,從容器發(fā)送到默認(rèn)網(wǎng)橋的流量,并不會(huì)被轉(zhuǎn)發(fā)到外部。要開啟轉(zhuǎn)發(fā),需要改變兩個(gè)設(shè)置。這些不是 Docker 命令,并且它們會(huì)影響 Docker 主機(jī)的內(nèi)核。

配置 Linux 內(nèi)核來允許 IP 轉(zhuǎn)發(fā)

$ sysctl net.ipv4.conf.all.forwarding=1

改變 iptables 的政策,F(xiàn)ORWARD 政策從 DROP 變?yōu)?ACCEPT

$ sudo iptables -P FORWARD ACCEPT

這些設(shè)置在重新啟動(dòng)時(shí)失效,因此可能需要將它們添加到啟動(dòng)腳本中。

7. 使用默認(rèn)網(wǎng)橋

默認(rèn)橋接網(wǎng)絡(luò)被視為 Docker 的遺留細(xì)節(jié),不建議用于生產(chǎn)用途。配置默認(rèn)網(wǎng)橋是一個(gè)手動(dòng)操作,并且它有技術(shù)上的缺點(diǎn)。

7.1 將容器連接到默認(rèn)網(wǎng)橋

如果沒有通過 --network 標(biāo)志聲明網(wǎng)絡(luò),并且指定了網(wǎng)絡(luò)驅(qū)動(dòng)程序,則默認(rèn)情況下容器已連接到默認(rèn)網(wǎng)橋。連接到默認(rèn)橋接網(wǎng)絡(luò)的容器可以進(jìn)行通信,但只能通過 IP 地址進(jìn)行通信,除非它們使用遺留標(biāo)志 --link 進(jìn)行鏈接。

7.2 配置默認(rèn)網(wǎng)橋

要配置默認(rèn)網(wǎng)橋,需要在 daemon.json 配置文件中指定選項(xiàng)。下面的例子聲明了幾個(gè)選項(xiàng)。只需要在文件中指定需要自定義的設(shè)置。

{
 "bip": "192.168.1.5/24",
 "fixed-cidr": "192.168.1.5/25",
 "fixed-cidr-v6": "2001:db8::/64",
 "mtu": 1500,
 "default-gateway": "10.20.1.1",
 "default-gateway-v6": "2001:db8:abcd::89",
 "dns": ["10.20.1.2","10.20.1.3"]
}

重啟 Docker 使變更生效。

7.3 通過默認(rèn)網(wǎng)橋使用 IPv6

如果 Docker 被配置為支持 IPv6(查看 使用 IPv6),則默認(rèn)網(wǎng)橋會(huì)被自動(dòng)配置為支持 IPv6。不像用戶自定義網(wǎng)橋,不能在默認(rèn)網(wǎng)橋中選擇性的關(guān)閉 IPv6。

8. 后續(xù)步驟

通過獨(dú)立的網(wǎng)絡(luò)教程

以上就是本文的全部?jī)?nèi)容,希望對(duì)大家的學(xué)習(xí)有所幫助,也希望大家多多支持腳本之家。

相關(guān)文章

  • Docker?Desktop?啟用?Kubernetes?失敗后處理方案

    Docker?Desktop?啟用?Kubernetes?失敗后處理方案

    ?在setting -> Kubernetes 中,選中 Enable Kubernetes 后,長(zhǎng)時(shí)間顯示 Starting ...? ,在Images中顯示幾個(gè)自動(dòng)下載的鏡像后,顯示 Start Kubernetes failed,這篇文章主要介紹了Docker?Desktop啟用Kubernetes失敗后處理方法,需要的朋友可以參考下
    2023-08-08
  • Docker之限制容器的資源使用過程

    Docker之限制容器的資源使用過程

    這篇文章主要介紹了Docker之限制容器的資源使用過程,具有很好的參考價(jià)值,希望對(duì)大家有所幫助,如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2024-07-07
  • 使用docker創(chuàng)建靜態(tài)網(wǎng)站應(yīng)用(多種方式)

    使用docker創(chuàng)建靜態(tài)網(wǎng)站應(yīng)用(多種方式)

    這篇文章主要介紹了使用docker創(chuàng)建靜態(tài)網(wǎng)站應(yīng)用(多種方式),小編覺得挺不錯(cuò)的,現(xiàn)在分享給大家,也給大家做個(gè)參考。一起跟隨小編過來看看吧
    2019-01-01
  • 基于docker安裝tensorflow的完整步驟

    基于docker安裝tensorflow的完整步驟

    TensorFlow 隨著AlphaGo的勝利也火了起來。 下面這篇文章主要給大家介紹了關(guān)于基于docker安裝tensorflow的相關(guān)資料,文中通過示例代碼介紹的非常詳細(xì),需要的朋友們下面隨著小編來一起學(xué)習(xí)學(xué)習(xí)吧。
    2018-02-02
  • 如何讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql語句

    如何讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql語句

    這篇文章主要介紹了讓docker中的mysql啟動(dòng)時(shí)自動(dòng)執(zhí)行sql的方法,本文給大家介紹的非常詳細(xì),具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2019-09-09
  • ubuntu系統(tǒng)使用docker gitlab 磁盤空間滿的問題及解決

    ubuntu系統(tǒng)使用docker gitlab 磁盤空間滿的問題及解決

    這篇文章主要介紹了ubuntu系統(tǒng)使用docker gitlab 磁盤空間滿的問題及解決方案,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-05-05
  • nexus搭建私有docker倉庫的方法

    nexus搭建私有docker倉庫的方法

    Nexus之前已支持了maven/npm/composer,由于docker倉庫和前面幾個(gè)存在比較大的差異,所以我特此記錄下走過的坑,本文重點(diǎn)介紹nexus搭建私有docker倉庫的相關(guān)知識(shí),感興趣的朋友一起看看吧
    2024-03-03
  • docker部署應(yīng)用的三種方式

    docker部署應(yīng)用的三種方式

    越來越多的前端團(tuán)隊(duì)選擇用Docker部署前端項(xiàng)目,本文主要介紹了docker部署應(yīng)用的三種方式,具有一定的參考價(jià)值,感興趣的可以了解一下
    2024-03-03
  • 通過idea打包項(xiàng)目到docker的操作方法

    通過idea打包項(xiàng)目到docker的操作方法

    這篇文章主要介紹了通過idea打包項(xiàng)目到docker的操作方法,本文通過圖文并茂的形式給大家介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或工作具有一定的參考借鑒價(jià)值,需要的朋友可以參考下
    2021-05-05
  • 如何設(shè)置docker開機(jī)自啟動(dòng),并設(shè)置容器自動(dòng)重啟

    如何設(shè)置docker開機(jī)自啟動(dòng),并設(shè)置容器自動(dòng)重啟

    這篇文章主要介紹了如何設(shè)置docker開機(jī)自啟動(dòng),并設(shè)置容器自動(dòng)重啟問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教
    2023-02-02

最新評(píng)論