天天看點

基礎的 Docker 容器網絡指令

各位好,今天我們将學習一些docker容器的基礎指令。docker 是一個開源項目,提供了一個可以打包、裝載和運作任何應用的輕量級容器的開放平台。它沒有語言支援、架構和打包系統的限制,從小型的家用電腦到高端伺服器,在何時何地都可以運作。它可以使部署和擴充web應用程式、資料庫和後端服務像搭積木一樣容易,而不依賴特定技術棧或提供商。docker适用于網絡環境,它正應用于資料中心、isp和越來越多的網絡服務。

是以,這裡有一些你在管理docker容器的時候會用到的一些指令。

基礎的 Docker 容器網絡指令

<a target="_blank"></a>

docker預設會建立一個名為docker0的網橋接口作為連接配接外部世界的基礎。運作中的docker容器直接連接配接到網橋接口docker0。預設上,docker會配置設定172.17.42.1/16給docker0,它是所有運作中的容器ip位址的子網。找到docker接口的ip位址非常簡單。要找出docker0網橋接口和連接配接到網橋上的docker容器,我們可以在安裝了docker的終端或者shell中運作ip指令。

<code># ip a</code>

基礎的 Docker 容器網絡指令

docker interface

如我們上面讀到的,docker在主控端中建立了一個叫docker0的網橋接口。在我們建立一個新的docker容器時,它自動被預設配置設定了一個在該子網範圍内的ip位址。是以,要檢測運作中的docker容器的ip位址,我們需要進入一個正在運作的容器并用下面的指令檢查ip位址。首先,我們運作一個新的容器并進入其中。如果你已經有一個正在運作的容器,你可以跳過這個步驟。

<code># docker run -it ubuntu</code>

現在,我們可以運作ip a來得到容器的ip位址了。

基礎的 Docker 容器網絡指令

docker container ip

要映射配置在dockerfile的暴露端口到主控端的高位端口,我們隻需用下面帶上-p标志的指令。這會打開docker容器的随機端口并映射到dockerfile中定義的端口。下面是使用-p來打開/暴露定義的端口的例子。

<code># docker run -itd -p httpd</code>

基礎的 Docker 容器網絡指令

mapping expose port

上面的指令會映射容器的端口到 httpd 容器的 dockerfile 中定義的80端口上。我們用下面的指令來檢視正在運作的容器暴露的端口。

<code># docker ps</code>

并且可以用下面的curl指令來檢查。

<code># curl http://localhost:49153</code>

基礎的 Docker 容器網絡指令

curl exposed port

我們也可以映射暴露端口或者docker容器端口到我們指定的端口上。要實作這個,我們用-p标志來定義我們所需的端口。這裡是我們的一個例子。

<code># docker run -itd -p 8080:80 httpd</code>

上面的指令會映射(主控端的)8080端口到(容器的)80上。我們可以運作curl來檢查這點。

<code># curl http://localhost:8080</code>

基礎的 Docker 容器網絡指令

mapping specific port

要給容器建立一個自定義的ip位址,在本篇中我們會建立一個名為br0的新網橋。要配置設定需要的ip位址,我們需要在運作docker的主控端中運作下面的指令。

<code># stop docker.io</code>

<code># ip link add br0 type bridge</code>

<code># ip addr add 172.30.1.1/20 dev br0</code>

<code># ip link set br0 up</code>

<code># docker -d -b br0</code>

基礎的 Docker 容器網絡指令

creating bridge interface

建立完docker網橋之後,我們要讓docker的守護程序知道它。

<code># echo 'docker_opts="-b=br0"' &gt;&gt; /etc/default/docker</code>

<code># service docker.io start</code>

基礎的 Docker 容器網絡指令

adding interface to docker

到這裡,橋接後的接口将會配置設定給容器在橋接子網内的新ip位址。

我們可以用docker将一個容器連接配接到另外一個上。我們可以在不同的容器上運作不同的程式,并且互相連接配接或連結。連結允許容器間互相連接配接并從一個容器上安全地傳輸資訊給另一個容器。要做到這個,我們可以使用--link标志。首先,我們使用--name标志來标示training/postgres鏡像。

<code># docker run -d --name db training/postgres</code>

基礎的 Docker 容器網絡指令

running db container

完成之後,我們将容器db與training/webapp連結來形成新的叫web的容器。

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

基礎的 Docker 容器網絡指令

linking two containers

docker網絡很神奇也好玩,我們可以對docker容器做很多事情。我們可以把玩這些簡單而基礎的docker網絡指令。docker的網絡是非常先進的,我們可以用它做很多事情。

如果你有任何的問題、建議、回報請在下面的評論欄寫下來以便于我們我們可以提升或者更新文章的内容。謝謝! 玩得開心!:-)

<b>原文釋出時間為:2015-06-11</b>

<b>本文來自雲栖社群合作夥伴“linux中國”</b>