Linux中國

基礎的 Docker 容器網路命令

1. 找到Docker介面

Docker默認會創建一個名為docker0的網橋介面作為連接外部世界的基礎。運行中的docker容器直接連接到網橋介面docker0。默認上,docker會分配172.17.42.1/16給docker0,它是所有運行中的容器ip地址的子網。找到Docker介面的ip地址非常簡單。要找出docker0網橋介面和連接到網橋上的docker容器,我們可以在安裝了docker的終端或者shell中運行ip命令。

# ip a

Docker Interface

2. 得到Docker容器的ip地址

如我們上面讀到的,docker在宿主機中創建了一個叫docker0的網橋介面。在我們創建一個新的docker容器時,它自動被默認分配了一個在該子網範圍內的ip地址。因此,要檢測運行中的Docker容器的ip地址,我們需要進入一個正在運行的容器並用下面的命令檢查ip地址。首先,我們運行一個新的容器並進入其中。如果你已經有一個正在運行的容器,你可以跳過這個步驟。

# docker run -it ubuntu

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

# ip a

Docker Container IP

3. 映射暴露的埠

要映射配置在Dockerfile的暴露埠到宿主機的高位埠,我們只需用下面帶上-P標誌的命令。這會打開docker容器的隨機埠並映射到Dockerfile中定義的埠。下面是使用-P來打開/暴露定義的埠的例子。

# docker run -itd -P httpd

Mapping Expose Port

上面的命令會映射容器的埠到 httpd 容器的 Dockerfile 中定義的80埠上。我們用下面的命令來查看正在運行的容器暴露的埠。

# docker ps

並且可以用下面的curl命令來檢查。

# curl http://localhost:49153

Curl Exposed Port

4. 映射到特定的埠上

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

# docker run -itd -p 8080:80 httpd

上面的命令會映射(宿主機的)8080埠到(容器的)80上。我們可以運行curl來檢查這點。

# curl http://localhost:8080

Mapping Specific Port

5. 創建自己的網橋

要給容器創建一個自定義的IP地址,在本篇中我們會創建一個名為br0的新網橋。要分配需要的ip地址,我們需要在運行docker的宿主機中運行下面的命令。

# stop docker.io
# ip link add br0 type bridge
# ip addr add 172.30.1.1/20 dev br0
# ip link set br0 up
# docker -d -b br0

Creating Bridge Interface

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

# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker
# service docker.io start

Adding Interface to Docker

到這裡,橋接後的介面將會分配給容器在橋接子網內的新ip地址。

6. 鏈接到另外一個容器上

我們可以用Docker將一個容器連接到另外一個上。我們可以在不同的容器上運行不同的程序,並且相互連接或鏈接。鏈接允許容器間相互連接並從一個容器上安全地傳輸信息給另一個容器。要做到這個,我們可以使用--link標誌。首先,我們使用--name標誌來標示training/postgres鏡像。

# docker run -d --name db training/postgres

Running db Container

完成之後,我們將容器db與training/webapp鏈接來形成新的叫web的容器。

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

linking two containers

總結

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

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

via: http://linoxide.com/linux-how-to/networking-commands-docker-containers/

作者:Arun Pyasi 譯者:geekpi 校對:wxy

本文由 LCTT 原創翻譯,Linux中國 榮譽推出


本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive

對這篇文章感覺如何?

太棒了
0
不錯
0
愛死了
0
不太好
0
感覺很糟
0
雨落清風。心向陽

    You may also like

    Leave a reply

    您的電子郵箱地址不會被公開。 必填項已用 * 標註

    此站點使用Akismet來減少垃圾評論。了解我們如何處理您的評論數據

    More in:Linux中國