docker學習筆記:容器的網絡設置


創建一個docker容器,docker系統會自動為該容器分配一個ip地址,通常是172.17開頭。

我們可以在主機上用 docker inspect 命令 或者進入容器用ifconfig命令來查看容器的ip地址。

假設某個容器(假設容器的名稱為myweb)被分配的地址是 172.17.0.2,該容器上啟動了一個web服務,其端口號是80(注意這是容器中的端口號)。

這時我們用docker port命令可以查看該web服務在容器的端口對應到主機端口的信息,如:

docker port myweb

輸出
80/tcp -> 0.0.0.0:32776

一、這時我們在docker主機上可通過如下方式訪問容器的服務

1、方式一:

curl  http://localhost:32776

2、方式二:

假設主機的ip地址為192.168.142.138

curl  http://192.168.142.138:32776

這樣docker主機局域網內的機器就可以通過主機的地址和綁定的ip來訪問到docker容器上的服務了。不過這存在的問題是,需要將容器端口與主機上端口的映射關系變成固定的。否則一旦容器重啟,綁定端口就會變了。

3、方式三:

假設容器的ip地址為 172.17.0.2

curl http://172.17.0.2:80

 

二、其它容器訪問該容器的web服務

現在啟動另外一個容器,在該容器中要訪問myweb容器提供的web服務,可以用如下方式:

1、方式一:直接通過容器的ip地址訪問

curl  http://172.17.0.2:80

說明:這么做是可以的,但問題是容器的ip地址是自動分配的,一旦提供該web服務的容器重啟后,其ip可能發生變化。這就導致原來指定的ip有問題了。

2、方式二:通過主機地址和映射端口訪問

curl http://192.168.142.138:32776

說明:這存在的問題是,端口的映射是自動的,容器一旦重啟后會發生變化。

 

總結下,如果某個容器提供了對外的服務(如web服務),則統一的訪問方式可以利用docker主機的ip地址和容器映射到主機上的端口來統一訪問。

 

三、容器之間互聯的另外一種方式

docker提供了一種機制,可以讓一個容器和另一個容器很方便的連接起來。舉例:

docker run --name test1 --link myweb:web -it ubuntu /bin/bash

上面命令創建了一個新的容器test1。 這里引入了一個新的標記 --link,其參數部分的myweb表示要連接的容器,web是要連接的容器的別名。

容器創建后,我們用 ping web命令發現能連接到myweb容器,這樣因為用的不是ip地址,而是別名。這樣即使myweb1容器重啟后,上面創建的test1容器對其連接的代碼或腳本也不用修改。

假設myweb容器提供了web服務,容器內的端口是80.

這時在test1容器內可以用如下方式訪問:  curl  http://web:80

顯然,這種方式的優點是不再指定ip地址,即使 myweb容器重啟后ip地址變了也沒關系。

 注意:需要注意的是,如果myweb容器未啟動,但有別的容器啟動,test1容器利用別名web可能會關聯到別的容器上,這是個問題。

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM