基礎的 Docker 容器網路命令
1. 找到Docker介面
Docker默認會創建一個名為docker0的網橋介面作為連接外部世界的基礎。運行中的docker容器直接連接到網橋介面docker0。默認上,docker會分配172.17.42.1/16給docker0,它是所有運行中的容器ip地址的子網。找到Docker介面的ip地址非常簡單。要找出docker0網橋介面和連接到網橋上的docker容器,我們可以在安裝了docker的終端或者shell中運行ip命令。
# ip a
2. 得到Docker容器的ip地址
如我們上面讀到的,docker在宿主機中創建了一個叫docker0的網橋介面。在我們創建一個新的docker容器時,它自動被默認分配了一個在該子網範圍內的ip地址。因此,要檢測運行中的Docker容器的ip地址,我們需要進入一個正在運行的容器並用下面的命令檢查ip地址。首先,我們運行一個新的容器並進入其中。如果你已經有一個正在運行的容器,你可以跳過這個步驟。
# docker run -it ubuntu
現在,我們可以運行ip a來得到容器的ip地址了。
# ip a
3. 映射暴露的埠
要映射配置在Dockerfile的暴露埠到宿主機的高位埠,我們只需用下面帶上-P標誌的命令。這會打開docker容器的隨機埠並映射到Dockerfile中定義的埠。下面是使用-P來打開/暴露定義的埠的例子。
# docker run -itd -P httpd
上面的命令會映射容器的埠到 httpd 容器的 Dockerfile 中定義的80埠上。我們用下面的命令來查看正在運行的容器暴露的埠。
# docker ps
並且可以用下面的curl命令來檢查。
# curl http://localhost:49153
4. 映射到特定的埠上
我們也可以映射暴露埠或者docker容器埠到我們指定的埠上。要實現這個,我們用-p標誌來定義我們所需的埠。這裡是我們的一個例子。
# docker run -itd -p 8080:80 httpd
上面的命令會映射(宿主機的)8080埠到(容器的)80上。我們可以運行curl來檢查這點。
# curl http://localhost:8080
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
創建完docker網橋之後,我們要讓docker的守護進程知道它。
# echo 'DOCKER_OPTS="-b=br0"' >> /etc/default/docker
# service docker.io start
到這裡,橋接後的介面將會分配給容器在橋接子網內的新ip地址。
6. 鏈接到另外一個容器上
我們可以用Docker將一個容器連接到另外一個上。我們可以在不同的容器上運行不同的程序,並且相互連接或鏈接。鏈接允許容器間相互連接並從一個容器上安全地傳輸信息給另一個容器。要做到這個,我們可以使用--link標誌。首先,我們使用--name標誌來標示training/postgres鏡像。
# docker run -d --name db training/postgres
完成之後,我們將容器db與training/webapp鏈接來形成新的叫web的容器。
# docker run -d -P --name web --link db:db training/webapp python app.py
總結
Docker網路很神奇也好玩,我們可以對docker容器做很多事情。我們可以把玩這些簡單而基礎的docker網路命令。docker的網路是非常先進的,我們可以用它做很多事情。
如果你有任何的問題、建議、反饋請在下面的評論欄寫下來以便於我們我們可以提升或者更新文章的內容。謝謝! 玩得開心!:-)
via: http://linoxide.com/linux-how-to/networking-commands-docker-containers/
作者:Arun Pyasi 譯者:geekpi 校對:wxy
本文轉載來自 Linux 中國: https://github.com/Linux-CN/archive