主頁(yè) > 知識(shí)庫(kù) > docker中容器的網(wǎng)絡(luò)配置常用命令詳解

docker中容器的網(wǎng)絡(luò)配置常用命令詳解

熱門(mén)標(biāo)簽:蘭州ai電銷(xiāo)機(jī)器人招商 新科美甲店地圖標(biāo)注 高德地圖標(biāo)注論壇 新邵電銷(xiāo)機(jī)器人企業(yè) 江西外呼系統(tǒng) 外呼系統(tǒng)打哪顯哪 北海市地圖標(biāo)注app AI電銷(xiāo)機(jī)器人 源碼 湖北ai智能電銷(xiāo)機(jī)器人

網(wǎng)絡(luò)基礎(chǔ)配置

雖然Docker可以根據(jù)鏡像“多開(kāi)”容器,并而每個(gè)容器互不影響,但并不代表容器與容器之間是完全決裂的。Docker在運(yùn)行鏡像的時(shí)候提供了映射容器端口到宿主主機(jī)、容器端口到另一個(gè)容器的網(wǎng)絡(luò)互聯(lián)功能,使得容器與宿主主機(jī)、容器與容器之間可以相互通信。

### 從外部訪問(wèn)容器應(yīng)用

在啟動(dòng)容器的時(shí)候,如果不指定對(duì)應(yīng)的參數(shù),在容器外是無(wú)法通過(guò)網(wǎng)絡(luò)來(lái)訪問(wèn)容器內(nèi)的網(wǎng)絡(luò)應(yīng)用和服務(wù)的。當(dāng)容器中運(yùn)行一些需要被外部訪問(wèn)的網(wǎng)絡(luò)應(yīng)用時(shí),可以通過(guò)-P或者-p參數(shù)來(lái)指定端口映射。當(dāng)使用-P標(biāo)記時(shí),Docker會(huì)隨機(jī)映射一個(gè)49000~49900的端口至容器內(nèi)部開(kāi)放的網(wǎng)絡(luò)端口:

docker run -d -p [mirror ID or TAG]

使用-p (小寫(xiě))則可以指定要映射的端口,并且在一個(gè)指定端口上只可以綁定一個(gè)容器。支持的格式有ip:hostPort:containerPort | ip::containerPort | hostPort:containerPort。

映射所有接口地址

使用hostPort:containerPort將本地的5000端口映射到容器的5000端口:

docker run -d -p 5000:5000 training/webapp python app.py

此時(shí)默認(rèn)會(huì)綁定本地所有接口上的所有地址。多次使用-p標(biāo)記可以綁定多個(gè)端口:

docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py

映射到指定地址的指定端口

可以使用ip:hostPort:containerPort格式指定映射使用一個(gè)特定地址,比如localhost地址127.0.0.1:

docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py

也可以是內(nèi)部其它容器的IP地址。

映射到指定地址的任意端口

使用ip::containerPort綁定localhost的任意端口到容器5000端口,本地主機(jī)會(huì)自動(dòng)分配一個(gè)端口:

docker run -d -p 127.0.0.1::5000 training/webapp python app.py

還可以使用udp標(biāo)記來(lái)指定udp端口:

docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py

查看映射端口配置

使用docker port查看當(dāng)前映射的端口配置,也可以查看到綁定的地址:

docker port nostalgic_morse 5000

容器有自己的內(nèi)部網(wǎng)絡(luò)和IP地址(使用docker inspect+容器ID可以獲取所有的變量值)。

容器互聯(lián)實(shí)現(xiàn)容器間的互通信

容器的連接系統(tǒng)是除了端口映射外另一種可以與容器中應(yīng)用進(jìn)行交互的方式。它會(huì)在源和接收容器之間創(chuàng)建一個(gè)隧道,接收容器可以看到源容器指定的信息。

自定義容器命名

連接系統(tǒng)依據(jù)容器的名稱(chēng)來(lái)執(zhí)行。因此首先需要自定義一個(gè)好記的容器命名。

雖然當(dāng)創(chuàng)建容器的時(shí)候,系統(tǒng)默認(rèn)會(huì)分配一個(gè)名字,但自定義命名容器有兩個(gè)好處:

  • 自定義的命名比較好記
  • 當(dāng)要連接其它容器時(shí),可以作為一個(gè)有用的參數(shù)點(diǎn),比如連接web容器到db容器。

使用--name標(biāo)記可以為容器自定義命名:

docker run -d -p --name web training/webapp python app.py

使用docker ps可以查看命名,或者使用docker inspect來(lái)查看容器的名字:

docker inspect -f "{{name}}" [mirror ID]

容器的名稱(chēng)是唯一的,如果已經(jīng)命名了一個(gè)叫web的容器,必須先用docker rm命令來(lái)刪除這個(gè)容器,才能再以web這個(gè)名稱(chēng)創(chuàng)建新容器。

容器互聯(lián)

使用--link參數(shù)可以讓容器之間安全地進(jìn)行交互。

--link參數(shù)格式是--link name:alias,其中name是要鏈接容器的名稱(chēng),alias是這個(gè)連接的別名。

比如我們先創(chuàng)建一個(gè)新的數(shù)據(jù)庫(kù)容器:

docker run -d --name db training/postgres

然后再創(chuàng)建一個(gè)web容器,并將它連接到db容器:

docker run -d -p --name web --link db:db training/webapp python app.py

這個(gè)時(shí)候db容器就與web容器可以互相通信了??梢允褂胐ocker ps來(lái)查看容器的連接。

使用--link參數(shù)可以讓Docker在兩個(gè)容器之間通過(guò)一個(gè)安全的隧道互相通信,而不用通過(guò)開(kāi)放端口的方式來(lái)實(shí)現(xiàn),避免了把端口暴露到外部網(wǎng)絡(luò)上。

查看公開(kāi)容器的接連信息

環(huán)境變量:使用env命令來(lái)查看容器的環(huán)境變量

docker run --name web --link db:db training/webapp env

/etc/hosts文件:使用link參數(shù)時(shí),Docker會(huì)添加host信息到父容器的/etc/hosts的文件。下面是父容器web的hosts文件

docker run -t -i --link db:db training/webapp /bin/bash
root@aed84ee21bd3:/opt/webapp# cat /etc/hosts
127.17.0.7 aed84ee21bde
...
172.17.0.5 db

第一個(gè)是web容器的host信息,默認(rèn)用自己的id為主機(jī)名。第二個(gè)是db容器的ip和主機(jī)名。

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

標(biāo)簽:池州 南陽(yáng) 大理 阿克蘇 自貢 黃石 海南 黔東

巨人網(wǎng)絡(luò)通訊聲明:本文標(biāo)題《docker中容器的網(wǎng)絡(luò)配置常用命令詳解》,本文關(guān)鍵詞  docker,中,容器,的,網(wǎng)絡(luò),配置,;如發(fā)現(xiàn)本文內(nèi)容存在版權(quán)問(wèn)題,煩請(qǐng)?zhí)峁┫嚓P(guān)信息告之我們,我們將及時(shí)溝通與處理。本站內(nèi)容系統(tǒng)采集于網(wǎng)絡(luò),涉及言論、版權(quán)與本站無(wú)關(guān)。
  • 相關(guān)文章
  • 下面列出與本文章《docker中容器的網(wǎng)絡(luò)配置常用命令詳解》相關(guān)的同類(lèi)信息!
  • 本頁(yè)收集關(guān)于docker中容器的網(wǎng)絡(luò)配置常用命令詳解的相關(guān)信息資訊供網(wǎng)民參考!
  • 推薦文章