您好,登錄后才能下訂單哦!
這篇“Docker怎么配置網(wǎng)絡(luò)”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“Docker怎么配置網(wǎng)絡(luò)”文章吧。
端口映射實現(xiàn)訪問容器
從外部訪問容器應(yīng)用
在啟動容器的時候,如果不指定對應(yīng)的參數(shù),在容器外部是無法通過網(wǎng)絡(luò)來訪問容器內(nèi)的網(wǎng)絡(luò)應(yīng)用和服務(wù)的。當容器中運行了一些網(wǎng)絡(luò)應(yīng)用,要讓外部訪問這些應(yīng)用時,可以通過 -p 或 -p 參數(shù)來指定端口映射。當使用 -p 參數(shù)時,docker 會隨機選擇一個主機可用的端口映射至容器內(nèi)部開放的網(wǎng)絡(luò)端口:
$ docker run -d -p training/webapp python app.py
使用 docker ps 命令查看一下映射結(jié)果:
我這里主機的 32768 端口映射到了容器的 5000 端口。此時訪問主機的 32768 端口就可以訪問容器內(nèi) web 應(yīng)用提供的內(nèi)容。
-p (小寫)參數(shù)則可以指定要映射的主機端口。注意,在一個指定的主機端口上只能綁定一個容器。我們可以通過不同的參數(shù)格式映射主機和容器之間的端口:
ip:hostport:containerport
ip::containerport
hostport:containerport
映射所有接口地址
使用 hostport:containerport 格式將本地的 5000 端口映射到容器的 5000 端口,可以執(zhí)行如下命令:
$ sudo docker run -d -p 5000:5000 training/webapp python app.py
此時默認會綁定本地所有接口上的所有地址(如果主機有多個 ip,那么每個 ip 的 5000 端口都映射到了容器的 5000 端口)。
多次使用 -p 參數(shù)可以綁定多個端口:
$ sudo docker run -d -p 5000:5000 -p 3000:80 training/webapp python app.py
映射到指定地址的指定端口
可以使用 ip:hostport:containerport 格式的參數(shù)指定映射使用一個特定地址,比如 localhost 地址 127.0.0.1:
$ sudo docker run -d -p 127.0.0.1:5000:5000 training/webapp python app.py
映射到指定地址的任意端口
使用 ip::containerport 格式的參數(shù)可以綁定 localhost 的任意端口到容器的 5000 端口,本地主機會自動分配一個端口:
$ sudo docker run -d -p 127.0.0.1::5000 training/webapp python app.py
另外還可以使用 udp 標記來指定 udp 端口:
$ sudo docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
查看映射端口配置
使用 docker port 命令可以查看當前映射的端口配置,也可以查看到綁定的地址:
上圖中 mad_einstein 是容器的名字,32768 是容器的 5000 端口映射到主機上的端口。
容器互聯(lián)實現(xiàn)容器間通信
容器的連接(linking)系統(tǒng)是除了端口映射外另一種可以與容器中應(yīng)用進行交互的方式。它會在源和接收容器之間創(chuàng)建一個隧道,接收容器可以看到源容器指定的信息。
自定義容器命名
連接系統(tǒng)依據(jù)容器的名稱來執(zhí)行。因此,首先需要自定義一個好記的容器名稱。雖然當創(chuàng)建容器的時候,系統(tǒng)默認會分配一個名字,但自定義命名容器有兩個好處:
1. 自定義的名稱比較好記。
2. 當要連接其他容器的時候,可以作為一個有用的參考點,比如連接 web 容器到 db 容器。
使用 –name 標記可以為容器自定義名稱:
$ sudo docker run -d -p –name web training/webapp python app.py
使用 docker ps 來驗證設(shè)定的名稱:
也可以使用 docker inspect 來查看容器的名稱:
注意,容器的名稱是唯一的。如果已經(jīng)命名了一個叫 web 的容器,當你要再次使用 web 這個名稱的時候,需要先用 docker rm 來刪除之前創(chuàng)建的同名容器。在執(zhí)行 docker run 的時候如果添加 – rm 標記,則容器在終止后會立刻刪除。但 – rm 和 -d 不能同時使用。
容器互聯(lián)
使用 –link 參數(shù)可以讓容器之間安全的進行交互。
下面先創(chuàng)建一個新的數(shù)據(jù)庫容器:
$ sudo docker run -d –name db training/postgres
刪除之前創(chuàng)建的web容器:
$ sudo docker rm -f web
然后創(chuàng)建一個新的 web 容器,并將它連接到 db 容器:
$ sudo docker run -d -p –name web –link db:db training/webapp python app.py
此時,db 容器和 web 容器建立互聯(lián)關(guān)系。
--link 參數(shù)的格式為 –link name:alias,其中 name 是要連接的容器的名稱,alias 是這個連接的別名。
docker 在兩個互聯(lián)的容器之間創(chuàng)建了一個安全隧道,而且不用映射它們的端口到宿主主機上。在啟動 db 容器的時候沒有使用 -p 和 -p 標記,從而避免了暴露數(shù)據(jù)庫端口到外部網(wǎng)絡(luò)上。
docker 通過兩種方式為容器公開連接信息:
1. 環(huán)境變量。
2. 更新 /etc/hosts文件。
使用 env 命令來查看 web 容器的環(huán)境變量:
$ sudo docker run –rm –name web2 –link db:db training/webapp python app.py env
其中 db_ 開頭的環(huán)境變量是供 web 容器連接 db 容器使用的。
除了環(huán)境變量,docker 還添加了 host 信息到容器的 /etc/hosts 文件中。下面查看web容器的 hosts 文件:
$ sudo docker run -t -i –rm –link db:db training/webapp /bin/bash
上圖中有兩個 host 信息,第一個是 db 容器的名稱 ip 和主機名。第二個是 web 容器,web 容器用自己的 id 作為默認主機名。我們可以通過 ping 命令測試 web 容器到db容器的連接:
如圖所示,名稱 db 被解析成了 172.17.0.24。
以上就是關(guān)于“Docker怎么配置網(wǎng)絡(luò)”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注億速云行業(yè)資訊頻道。
免責聲明:本站發(fā)布的內(nèi)容(圖片、視頻和文字)以原創(chuàng)、轉(zhuǎn)載和分享為主,文章觀點不代表本網(wǎng)站立場,如果涉及侵權(quán)請聯(lián)系站長郵箱:is@yisu.com進行舉報,并提供相關(guān)證據(jù),一經(jīng)查實,將立刻刪除涉嫌侵權(quán)內(nèi)容。