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

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信

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

目錄

一、概述

二、默認(rèn)網(wǎng)絡(luò)

三、網(wǎng)絡(luò)模式及應(yīng)用

1. Bridge模式

2. Host模式

3. none網(wǎng)絡(luò)模式

四、自定義網(wǎng)絡(luò)應(yīng)用

1. 網(wǎng)絡(luò)相連

2. 自定義通訊

3.?自定義IP

每篇一獲


一、概述

在 Docker 中,網(wǎng)絡(luò)設(shè)置包括 IP 地址、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS 和端口號等關(guān)鍵組成部分。下面我將為您詳細(xì)介紹這些概念:

  1. IP 地址:IP 地址是 Docker 容器在網(wǎng)絡(luò)中的唯一標(biāo)識。每個 Docker 容器都會被分配一個 IP 地址,用于在網(wǎng)絡(luò)中進(jìn)行通信。在 Docker 的默認(rèn)網(wǎng)絡(luò)模式下,Docker 容器的 IP 地址是由 Docker 內(nèi)部的 IPAM(IP 地址管理)系統(tǒng)自動分配的。

  2. 子網(wǎng)掩碼:子網(wǎng)掩碼用于劃分 IP 地址的網(wǎng)絡(luò)部分和主機(jī)部分。在 Docker 中,您可以在創(chuàng)建自定義網(wǎng)絡(luò)時指定子網(wǎng)掩碼,以劃分您的 Docker 網(wǎng)絡(luò)。

  3. 網(wǎng)關(guān):網(wǎng)關(guān)是 Docker 容器訪問外部網(wǎng)絡(luò)的入口。在 Docker 的默認(rèn)網(wǎng)絡(luò)模式下,Docker 容器的網(wǎng)關(guān)是由 Docker 內(nèi)部的 IPAM 系統(tǒng)自動分配的。

  4. DNS:DNS(域名系統(tǒng))用于將域名解析為 IP 地址。在 Docker 中,您可以在創(chuàng)建 Docker 容器時指定 DNS 服務(wù)器,以便 Docker 容器可以解析域名。

  5. 端口號:端口號用于標(biāo)識 Docker 容器內(nèi)部的特定網(wǎng)絡(luò)服務(wù)。在 Docker 中,您可以在創(chuàng)建 Docker 容器時指定端口映射,以便外部網(wǎng)絡(luò)可以訪問 Docker 容器內(nèi)部的網(wǎng)絡(luò)服務(wù)。

以上就是 Docker 中關(guān)于網(wǎng)絡(luò)的 IP 地址、子網(wǎng)掩碼、網(wǎng)關(guān)、DNS 和端口號的詳細(xì)介紹。理解這些概念對于管理和配置 Docker 容器的網(wǎng)絡(luò)環(huán)境非常重要。

子網(wǎng)掩碼:

子網(wǎng)掩碼是網(wǎng)絡(luò)地址的一部分,用于劃分網(wǎng)絡(luò)地址和主機(jī)地址。它是一個 32 位的二進(jìn)制數(shù),其中網(wǎng)絡(luò)部分全為 1,主機(jī)部分全為 0。子網(wǎng)掩碼的主要作用是幫助網(wǎng)絡(luò)設(shè)備判斷一個 IP 地址的哪些位代表網(wǎng)絡(luò)地址,哪些位代表主機(jī)地址。

在 Docker 中,當(dāng)我們創(chuàng)建自定義網(wǎng)絡(luò)時,可以指定子網(wǎng)掩碼。例如,我們可以創(chuàng)建一個子網(wǎng)掩碼為 255.255.255.0 的網(wǎng)絡(luò),這意味著這個網(wǎng)絡(luò)的前 24 位(即 255.255.255)是網(wǎng)絡(luò)地址,后 8 位是主機(jī)地址。這樣,我們就可以在這個網(wǎng)絡(luò)中創(chuàng)建最多 256(2 的 8 次方)個 Docker 容器。

子網(wǎng)掩碼的設(shè)置對于 Docker 網(wǎng)絡(luò)的劃分和管理非常重要。通過合理地設(shè)置子網(wǎng)掩碼,我們可以有效地管理 Docker 容器的網(wǎng)絡(luò)資源,例如避免 IP 地址的沖突,或者根據(jù)需要劃分不同的網(wǎng)絡(luò)區(qū)域。

網(wǎng)關(guān):

網(wǎng)關(guān)在網(wǎng)絡(luò)中起著非常重要的作用,它是一個網(wǎng)絡(luò)設(shè)備,用于連接兩個或更多的網(wǎng)絡(luò),使得這些網(wǎng)絡(luò)可以互相通信。在 Docker 中,網(wǎng)關(guān)通常被用于連接 Docker 容器和外部網(wǎng)絡(luò)。

在 Docker 的默認(rèn)網(wǎng)絡(luò)模式下,每個 Docker 容器都會被分配一個網(wǎng)關(guān)地址。這個網(wǎng)關(guān)地址是 Docker 容器訪問外部網(wǎng)絡(luò)的入口,所有從 Docker 容器發(fā)出的網(wǎng)絡(luò)請求都會通過這個網(wǎng)關(guān)地址轉(zhuǎn)發(fā)到外部網(wǎng)絡(luò)。

例如,如果一個 Docker 容器需要訪問互聯(lián)網(wǎng)上的一個網(wǎng)站,它會將網(wǎng)絡(luò)請求發(fā)送到它的網(wǎng)關(guān)地址,然后由網(wǎng)關(guān)將請求轉(zhuǎn)發(fā)到互聯(lián)網(wǎng)。同樣,所有發(fā)往 Docker 容器的網(wǎng)絡(luò)響應(yīng)也會通過網(wǎng)關(guān)地址轉(zhuǎn)發(fā)回 Docker 容器。

在創(chuàng)建自定義網(wǎng)絡(luò)時,我們可以指定網(wǎng)關(guān)地址。這樣,我們就可以控制 Docker 容器的網(wǎng)絡(luò)訪問,例如限制 Docker 容器訪問特定的外部網(wǎng)絡(luò),或者設(shè)置網(wǎng)絡(luò)路由規(guī)則。

二、默認(rèn)網(wǎng)絡(luò)

安裝 Docker 以后,會默認(rèn)創(chuàng)建三種網(wǎng)絡(luò),可以通過?docker network ls?命令查看。

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

  1. Bridge:Bridge 網(wǎng)絡(luò)是 Docker 的默認(rèn)網(wǎng)絡(luò)模型。當(dāng)您啟動一個新的 Docker 容器時,如果沒有指定網(wǎng)絡(luò),Docker 就會自動將這個容器連接到 Bridge 網(wǎng)絡(luò)。Bridge 網(wǎng)絡(luò)允許容器之間通過 IP 地址或者容器名進(jìn)行通信,但是,不同的 Bridge 網(wǎng)絡(luò)之間的容器是無法進(jìn)行通信的。

  2. Host:在 Host 網(wǎng)絡(luò)模式下,Docker 容器將直接使用主機(jī)的網(wǎng)絡(luò),無需進(jìn)行任何的網(wǎng)絡(luò)轉(zhuǎn)發(fā)。這意味著,如果您在容器中啟動了一個網(wǎng)絡(luò)服務(wù),那么這個服務(wù)將直接使用主機(jī)的網(wǎng)絡(luò)端口。

  3. None:None 網(wǎng)絡(luò)模式下,Docker 容器將運(yùn)行在自己的網(wǎng)絡(luò)命名空間中,但是不會進(jìn)行任何網(wǎng)絡(luò)配置。這意味著,這個容器沒有網(wǎng)絡(luò)接口,無法進(jìn)行網(wǎng)絡(luò)通信。

三、網(wǎng)絡(luò)模式及應(yīng)用

1. Bridge模式

Bridge 網(wǎng)絡(luò)模式?是 Docker 的默認(rèn)網(wǎng)絡(luò)模式,又稱網(wǎng)橋模式,它為 Docker 容器提供了一種簡單且有效的網(wǎng)絡(luò)連接方式。以下是 Bridge 網(wǎng)絡(luò)模式的主要作用和應(yīng)用:

  1. 容器間通信:在 Bridge 網(wǎng)絡(luò)模式下,同一 Bridge 網(wǎng)絡(luò)中的 Docker 容器可以通過 IP 地址或者容器名進(jìn)行通信。這使得在同一主機(jī)上運(yùn)行的不同容器可以方便地共享數(shù)據(jù)和服務(wù)。

  2. 網(wǎng)絡(luò)隔離:每個 Bridge 網(wǎng)絡(luò)都是獨(dú)立的,不同 Bridge 網(wǎng)絡(luò)之間的容器無法直接通信。這為 Docker 容器提供了一種有效的網(wǎng)絡(luò)隔離機(jī)制,可以防止不同應(yīng)用之間的網(wǎng)絡(luò)干擾。

  3. 端口映射:Bridge 網(wǎng)絡(luò)模式支持 Docker 容器和主機(jī)之間的端口映射。這意味著,您可以將 Docker 容器的網(wǎng)絡(luò)服務(wù)通過特定的端口暴露給主機(jī),從而使得外部網(wǎng)絡(luò)可以訪問到 Docker 容器的服務(wù)。

在實際應(yīng)用中,Bridge 網(wǎng)絡(luò)模式被廣泛用于部署和運(yùn)行各種 Docker 應(yīng)用。例如,您可以使用 Bridge 網(wǎng)絡(luò)模式來部署一個 Web 服務(wù)器和數(shù)據(jù)庫服務(wù)器,然后通過端口映射將 Web 服務(wù)器的服務(wù)暴露給外部網(wǎng)絡(luò),同時保持?jǐn)?shù)據(jù)庫服務(wù)器在網(wǎng)絡(luò)中的隔離。

命令:

docker run -itd --name t1? -p 9999:8080? tomcat:8.5.20

t1名稱? 9999主機(jī)端口? 8080虛擬機(jī)端口? ?tomcat鏡像? ?鏡像版本8.5.20

查看:

docker inspect t1

t1 容器名稱

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

查看信息如下:

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

  1. Gateway:這是 Docker 容器的默認(rèn)網(wǎng)關(guān),也就是容器發(fā)送的所有非本地地址的網(wǎng)絡(luò)流量都會通過這個網(wǎng)關(guān)路由。在大多數(shù)情況下,這個網(wǎng)關(guān)就是 Docker 容器所在的主機(jī)。

  2. IPAddress:這是 Docker 容器在其網(wǎng)絡(luò)內(nèi)的 IP 地址。每個 Docker 容器在其所連接的網(wǎng)絡(luò)中都會有一個唯一的 IP 地址,其他容器可以通過這個 IP 地址與其進(jìn)行通信。

查看默認(rèn)網(wǎng)絡(luò)【bridge】:

docker inspect bridge

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

  1. Container ID:這是 Docker 容器的唯一標(biāo)識符,由 Docker 在創(chuàng)建容器時自動生成。

  2. Name:這是 Docker 容器的名稱,可以在創(chuàng)建容器時由用戶自定義,也可以由 Docker 自動生成。

  3. IPv4Address:這是 Docker 容器在 Bridge 網(wǎng)絡(luò)中的 IPv4 地址。其他容器可以通過這個地址與其進(jìn)行通信。

  4. IPv6Address:這是 Docker 容器在 Bridge 網(wǎng)絡(luò)中的 IPv6 地址。如果 Docker 容器的網(wǎng)絡(luò)配置支持 IPv6,那么這個地址就會被顯示出來。

  5. EndpointID:這是 Docker 容器在 Bridge 網(wǎng)絡(luò)中的端點標(biāo)識符。Docker 使用這個標(biāo)識符來跟蹤容器的網(wǎng)絡(luò)連接。

  6. MacAddress:這是 Docker 容器的 MAC 地址。雖然 Docker 容器是虛擬的,但是它們在網(wǎng)絡(luò)中的行為就像真實的物理設(shè)備一樣,包括擁有自己的 MAC 地址。

  • 外部訪問

設(shè)置端口映射

docker run -itd --name bridge -p 8081:8080 spring:1.0

在這個 Docker 命令中,-p 8081:8080?是一個端口映射參數(shù)。這個參數(shù)的作用是將 Docker 容器內(nèi)的端口映射到宿主機(jī)的端口上。

具體來說,8081:8080?的含義是:

  • 8081?是宿主機(jī)的端口號。
  • 8080?是 Docker 容器內(nèi)的端口號。

這個參數(shù)的設(shè)置意味著,Docker 容器內(nèi)運(yùn)行的應(yīng)用如果監(jiān)聽在?8080?端口,那么這個應(yīng)用的服務(wù)就可以通過宿主機(jī)的?8081?端口進(jìn)行訪問。

例如,如果您的?spring:1.0?容器是運(yùn)行一個 Web 服務(wù),并且這個服務(wù)在容器內(nèi)監(jiān)聽?8080?端口,那么您就可以通過訪問宿主機(jī)的?8081?端口來使用這個 Web 服務(wù)。

端口映射是 Docker 的一個重要特性,它使得 Docker 容器內(nèi)的應(yīng)用可以方便地對外提供服務(wù),而無需關(guān)心容器的網(wǎng)絡(luò)環(huán)境和配置。

-p 參數(shù)可以出現(xiàn)多次,綁定多個端口號

docker run -itd --name bridge -p 8081:8080? -p 8082:8080 spring:1.0

在這個的 Docker 命令中,-p 8081:8080 -p 8082:8080?是端口映射參數(shù),這里映射了兩個宿主機(jī)端口到同一個 Docker 容器內(nèi)的端口。

具體來說:

  • -p 8081:8080?表示將 Docker 容器內(nèi)的?8080?端口映射到宿主機(jī)的?8081?端口。
  • -p 8082:8080?表示將 Docker 容器內(nèi)的?8080?端口映射到宿主機(jī)的?8082?端口。

這個設(shè)置意味著,Docker 容器內(nèi)運(yùn)行的應(yīng)用如果監(jiān)聽在?8080?端口,那么這個應(yīng)用的服務(wù)就可以通過宿主機(jī)的?8081?端口和?8082?端口進(jìn)行訪問。

這種綁定多個端口的方式可以讓您有更多的選擇來訪問 Docker 容器內(nèi)的服務(wù),也可以用來處理一些特殊的網(wǎng)絡(luò)需求,例如負(fù)載均衡和端口沖突等問題。

2. Host模式

Host 網(wǎng)絡(luò)模式?是 Docker 的一種網(wǎng)絡(luò)模式,又稱主機(jī)模式,它允許 Docker 容器共享宿主機(jī)的網(wǎng)絡(luò)命名空間。以下是 Host 網(wǎng)絡(luò)模式的主要作用和應(yīng)用:

  1. 性能優(yōu)化:在 Host 網(wǎng)絡(luò)模式下,Docker 容器可以直接使用宿主機(jī)的網(wǎng)絡(luò),無需通過 Docker 的網(wǎng)絡(luò)橋接,這可以減少網(wǎng)絡(luò)延遲,提高網(wǎng)絡(luò)性能。

  2. 端口管理:在 Host 網(wǎng)絡(luò)模式下,Docker 容器內(nèi)的端口會直接映射到宿主機(jī)的端口,無需進(jìn)行額外的端口映射設(shè)置。這使得端口管理更加簡單,也避免了端口映射可能帶來的端口沖突問題。

  3. 網(wǎng)絡(luò)服務(wù)部署:對于需要直接使用宿主機(jī)網(wǎng)絡(luò)的網(wǎng)絡(luò)服務(wù),例如需要監(jiān)聽宿主機(jī)所有 IP 地址的服務(wù),或者需要使用特定網(wǎng)絡(luò)接口或協(xié)議的服務(wù),Host 網(wǎng)絡(luò)模式是一個很好的選擇。

在實際應(yīng)用中,Host 網(wǎng)絡(luò)模式常常被用于部署需要高性能網(wǎng)絡(luò)或者特殊網(wǎng)絡(luò)需求的 Docker 應(yīng)用。例如,您可以使用 Host 網(wǎng)絡(luò)模式來部署一個需要監(jiān)聽所有 IP 地址的 Web 服務(wù)器,或者一個需要使用特定網(wǎng)絡(luò)接口的 VPN 服務(wù)。

需要注意的是,Host 網(wǎng)絡(luò)模式下的 Docker 容器會直接共享宿主機(jī)的網(wǎng)絡(luò),這可能會帶來一些安全風(fēng)險,因此在使用 Host 網(wǎng)絡(luò)模式時,需要對 Docker 容器的網(wǎng)絡(luò)訪問進(jìn)行適當(dāng)?shù)目刂坪拖拗啤?/p>

創(chuàng)建:?

docker run -itd --name t2?-p8848:8080 --net host tomcat:8.5.20

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

創(chuàng)建完成之后,可以直接在主機(jī)上通過虛擬機(jī)ip訪問:

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

在這個模式下不用映射端口也可以訪問,默認(rèn)8080直接映射:

刪除容器:docker rm -f t2??(刪除已有容器t2)

創(chuàng)建:docker run -itd --name t2? --net host tomcat:8.5.20

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

3. none網(wǎng)絡(luò)模式

None 網(wǎng)絡(luò)模式?是 Docker 的一種網(wǎng)絡(luò)模式,它為 Docker 容器提供了一個最小化的網(wǎng)絡(luò)環(huán)境。

在 None 網(wǎng)絡(luò)模式下,Docker 容器擁有自己的網(wǎng)絡(luò)命名空間,但是不會進(jìn)行任何網(wǎng)絡(luò)設(shè)備、IP 地址和路由的配置。這意味著,Docker 容器在 None 網(wǎng)絡(luò)模式下無法進(jìn)行網(wǎng)絡(luò)通信。

以下是 None 網(wǎng)絡(luò)模式的主要應(yīng)用:

  1. 網(wǎng)絡(luò)隔離:None 網(wǎng)絡(luò)模式可以為 Docker 容器提供一個完全隔離的網(wǎng)絡(luò)環(huán)境,這對于需要高度網(wǎng)絡(luò)隔離的應(yīng)用非常有用。例如,您可以使用 None 網(wǎng)絡(luò)模式來運(yùn)行一些安全敏感的應(yīng)用,以防止這些應(yīng)用被網(wǎng)絡(luò)攻擊。

  2. 自定義網(wǎng)絡(luò)配置:雖然 None 網(wǎng)絡(luò)模式下的 Docker 容器默認(rèn)無法進(jìn)行網(wǎng)絡(luò)通信,但是您可以在容器內(nèi)部進(jìn)行自定義的網(wǎng)絡(luò)配置,以滿足特殊的網(wǎng)絡(luò)需求。例如,您可以在 None 網(wǎng)絡(luò)模式下的 Docker 容器內(nèi)部設(shè)置 VPN,以實現(xiàn)容器的網(wǎng)絡(luò)通信。

需要注意的是,None 網(wǎng)絡(luò)模式下的 Docker 容器默認(rèn)無法進(jìn)行網(wǎng)絡(luò)通信,因此在使用 None 網(wǎng)絡(luò)模式時,需要對 Docker 容器的網(wǎng)絡(luò)需求進(jìn)行詳細(xì)的評估和規(guī)劃。

  • none 網(wǎng)絡(luò)模式是指禁用網(wǎng)絡(luò)功能,只有 lo 接口 local 的簡寫,代表 127.0.0.1,即 localhost 本地環(huán)回接口。在創(chuàng)建容器時通過參數(shù)?--net none?或者?--network none?指定;
  • none 網(wǎng)絡(luò)模式即不為 Docker Container 創(chuàng)建任何的網(wǎng)絡(luò)環(huán)境,容器內(nèi)部就只能使用 loopback 網(wǎng)絡(luò)設(shè)備,不會再有其他的網(wǎng)絡(luò)資源。可以說 none 模式為 Docke Container 做了極少的網(wǎng)絡(luò)設(shè)定,但是俗話說得好“少即是多”,在沒有網(wǎng)絡(luò)配置的情況下,作為 Docker 開發(fā)者,才能在這基礎(chǔ)做其他無限多可能的網(wǎng)絡(luò)定制開發(fā)。這也恰巧體現(xiàn)了 Docker 設(shè)計理念的開放。

我們可以通過?docker network inspect none?查看所有?none?網(wǎng)絡(luò)模式下的容器,在?Containers?節(jié)點中可以看到容器名稱。

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

四、自定義網(wǎng)絡(luò)應(yīng)用

1. 網(wǎng)絡(luò)相連

刪除所有容器,看容器中的網(wǎng)絡(luò)是否相互連得通,當(dāng)然也可以不刪除,保證容器不一致即可

刪除所有容器:docker rm -f $(docker ps -aq)

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

創(chuàng)建:docker run -it --name c1 centos

并且查看ip:ip addr

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

創(chuàng)建:docker run -it --name c2 centos

并且查看ip:ip addr

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

在c1中看看可不可以連接到c2中,進(jìn)行網(wǎng)絡(luò)相連

命令:ping 172.17.0.3??(172.17.0.3是c2的ip)

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

在c2中看看可不可以連接到c1中,進(jìn)行網(wǎng)絡(luò)相連

命令:ping 172.17.0.2??(172.17.0.2是c1的ip)

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

由以上看出兩容器是網(wǎng)絡(luò)相連的

2. 自定義通訊

創(chuàng)建路徑:

mkdir -p /mysql/{conf,data}

創(chuàng)建一個mysql目錄在其中創(chuàng)建了兩個文件夾,名為conf,data

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

將主機(jī)(自己的電腦)上的mysql配置文件拖到虛擬機(jī)的新建路徑中的conf文件夾中

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

my.cnf :

[client]
default-character-set=utf8
 
[mysql]
default-character-set=utf8
 
[mysqld]
# Remove leading # and set to the amount of RAM for the most important data
# cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
# innodb_buffer_pool_size = 128M
#
# Remove leading # to turn on a very important data integrity option: logging
# changes to the binary log between backups.
# log_bin
#
# Remove leading # to set options mainly useful for reporting servers.
# The server defaults are faster for transactions and fast SELECTs.
# Adjust sizes as needed, experiment to find the optimal values.
# join_buffer_size = 128M
# sort_buffer_size = 2M
# read_rnd_buffer_size = 2M
skip-host-cache
skip-name-resolve
datadir=/var/lib/mysql
socket=/var/lib/mysql/mysql.sock
secure-file-priv=/var/lib/mysql-files
user=mysql

# Disabling symbolic-links is recommended to prevent assorted security risks
symbolic-links=0

log-error=/var/log/mysqld.log
pid-file=/var/run/mysqld/mysqld.pid

init_connect='SET collation_connection = utf8_unicode_ci'
init_connect='SET NAMES utf8'
character-set-server=utf8
collation-server=utf8_unicode_ci
skip-character-set-client-handshake
# default: sql_mode= STRICT_TRANS_TABLES,NO_ZERO_IN_DATE,NO_ZERO_DATE,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
# modeified: 
sql_mode= STRICT_TRANS_TABLES,ERROR_FOR_DIVISION_BY_ZERO,NO_AUTO_CREATE_USER,NO_ENGINE_SUBSTITUTION
max_allowed_packet=10M
default-time_zone='+8:00'
default_authentication_plugin=mysql_native_password

創(chuàng)建目錄:mkdir mode

將主機(jī)(自己的電腦)上的war拖到虛擬機(jī)的新建路徑中

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

創(chuàng)建一個基于tomcat的容器并進(jìn)行目錄掛載:

docker run -it \
--name t1 \
-p 8080:8080 \
-v /mode:/usr/local/tomcat/webapps \
tomcat:8.5.20?

之后在mysql目錄中執(zhí)行命令:

docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
-d mysql/mysql-server:5.7

這里需要下載鏡像,等待下載完成并且創(chuàng)建完成即可。

進(jìn)入mysql容器:

命令:docker exec -it m1 bash

之后登入:mysql -uroot -p??

輸入創(chuàng)建時的密碼即可,也就是在mysql目錄中執(zhí)行命令中的MYSQL_ROOT_PASSWORD

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

在mysql中創(chuàng)建一個名為jun的用戶,可以進(jìn)行遠(yuǎn)程訪問

命令:grant all on *.* to jun@'%' identified by '123456';

并且退出:exit?

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

重新啟動mysql容器

命令:docker restart m1

在啟動的war中的配置文件進(jìn)行修改/mode/bs/WEB-INF/classes/中的application.yml的mysql

配置:

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

在這里也可以寫容器的ip進(jìn)行目錄,查看容器信息即可查看容器IP

3.?自定義IP

需要先創(chuàng)建一個網(wǎng)絡(luò)

docker network create --subnet 172.18.0.0/16? mode

其中mode為網(wǎng)絡(luò)名稱,可以直接修改名稱,subnet是指定IP

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

查看我們創(chuàng)建網(wǎng)絡(luò)的網(wǎng)段:docker inspect mode? ??(mode是需要查看的網(wǎng)絡(luò)名稱)

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

創(chuàng)建并指定容器的IP:

1. tomcat

docker run -it --name t1 \
-p 8080:8080 \
-v /mode:/usr/local/tomcat/webapps \ 
--net mode  \
--ip 172.18.0.2 \ 
tomcat:8.5.20

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

2. mysql

docker run \
--name m1 \
-v /mysql/conf/my.cnf:/etc/my.cnf \
-v /mysql/data:/var/lib/mysql \
--privileged=true \
-e MYSQL_ROOT_PASSWORD=123456 \
--net mode \
--ip 172.18.0.3 \
-d mysql/mysql-server:5.7

【Docker】網(wǎng)絡(luò)模式詳解及容器間網(wǎng)絡(luò)通信,php,開發(fā)語言,docker,linux,虛擬現(xiàn)實

之后修改根據(jù)容器的名稱修改war中的配置連接mysql,/mode/bs/WEB-INF/classes/中的application.yml,如何修改上面由講述。

每篇一獲

學(xué)習(xí) Docker 的網(wǎng)絡(luò)模式以及如何自定義網(wǎng)絡(luò)和 IP,可以帶給我們以下幾方面的收獲:

  1. 更好的網(wǎng)絡(luò)管理:理解 Docker 的網(wǎng)絡(luò)模式可以幫助我們更好地管理 Docker 容器的網(wǎng)絡(luò)環(huán)境,例如選擇合適的網(wǎng)絡(luò)模式來滿足特定的網(wǎng)絡(luò)需求,或者解決 Docker 容器的網(wǎng)絡(luò)問題。

  2. 更高的網(wǎng)絡(luò)性能:通過選擇合適的網(wǎng)絡(luò)模式,例如 Host 網(wǎng)絡(luò)模式,我們可以提高 Docker 容器的網(wǎng)絡(luò)性能。同時,通過自定義網(wǎng)絡(luò)和 IP,我們可以進(jìn)一步優(yōu)化 Docker 容器的網(wǎng)絡(luò)配置,以提高網(wǎng)絡(luò)性能。

  3. 更強(qiáng)的網(wǎng)絡(luò)安全:理解 Docker 的網(wǎng)絡(luò)模式可以幫助我們更好地保護(hù) Docker 容器的網(wǎng)絡(luò)安全,例如使用 None 網(wǎng)絡(luò)模式來實現(xiàn)網(wǎng)絡(luò)隔離,或者使用自定義網(wǎng)絡(luò)和 IP 來限制 Docker 容器的網(wǎng)絡(luò)訪問。

  4. 更大的網(wǎng)絡(luò)靈活性:通過自定義網(wǎng)絡(luò)和 IP,我們可以為 Docker 容器創(chuàng)建更靈活的網(wǎng)絡(luò)環(huán)境,例如創(chuàng)建多個網(wǎng)絡(luò)來隔離不同的 Docker 容器,或者為 Docker 容器分配特定的 IP 地址。

總的來說,學(xué)習(xí) Docker 的網(wǎng)絡(luò)模式以及如何自定義網(wǎng)絡(luò)和 IP,可以幫助我們更好地使用 Docker,提高我們的工作效率和產(chǎn)品質(zhì)量。文章來源地址http://www.zghlxwxcb.cn/news/detail-801312.html

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

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

領(lǐng)支付寶紅包贊助服務(wù)器費(fèi)用

相關(guān)文章

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

支付寶掃一掃打賞

博客贊助

微信掃一掃打賞

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

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

二維碼1

領(lǐng)取紅包

二維碼2

領(lǐng)紅包