各位好,今天我們將學(xué)習(xí)一些Docker容器的基礎(chǔ)命令。Docker 是一個(gè)開(kāi)源項(xiàng)目,提供了一個(gè)可以打包、裝載和運(yùn)行任何應(yīng)用的輕量級(jí)容器的開(kāi)放平臺(tái)。它沒(méi)有語(yǔ)言支持、框架和打包系統(tǒng)的限制,從小型的家用電腦到高端服務(wù)器,在何時(shí)何地都可以運(yùn)行。它可以使部署和擴(kuò)展web應(yīng)用程序、數(shù)據(jù)庫(kù)和后端服務(wù)像搭積木一樣容易,而不依賴特定技術(shù)棧或提供商。Docker適用于網(wǎng)絡(luò)環(huán)境,它正應(yīng)用于數(shù)據(jù)中心、ISP和越來(lái)越多的網(wǎng)絡(luò)服務(wù)。
因此,這里有一些你在管理Docker容器的時(shí)候會(huì)用到的一些命令。
1. 找到Docker接口
Docker默認(rèn)會(huì)創(chuàng)建一個(gè)名為docker0的網(wǎng)橋接口作為連接外部世界的基礎(chǔ)。運(yùn)行中的docker容器直接連接到網(wǎng)橋接口docker0。默認(rèn)上,docker會(huì)分配172.17.42.1/16給docker0,它是所有運(yùn)行中的容器ip地址的子網(wǎng)。找到Docker接口的ip地址非常簡(jiǎn)單。要找出docker0網(wǎng)橋接口和連接到網(wǎng)橋上的docker容器,我們可以在安裝了docker的終端或者shell中運(yùn)行ip命令。
# ip a
2. 得到Docker容器的ip地址
如我們上面讀到的,docker在宿主機(jī)中創(chuàng)建了一個(gè)叫docker0的網(wǎng)橋接口。在我們創(chuàng)建一個(gè)新的docker容器時(shí),它自動(dòng)被默認(rèn)分配了一個(gè)在該子網(wǎng)范圍內(nèi)的ip地址。因此,要檢測(cè)運(yùn)行中的Docker容器的ip地址,我們需要進(jìn)入一個(gè)正在運(yùn)行的容器并用下面的命令檢查ip地址。首先,我們運(yùn)行一個(gè)新的容器并進(jìn)入其中。如果你已經(jīng)有一個(gè)正在運(yùn)行的容器,你可以跳過(guò)這個(gè)步驟。
# docker run -it ubuntu
現(xiàn)在,我們可以運(yùn)行ip a來(lái)得到容器的ip地址了。
# ip a
3. 映射暴露的端口
要映射配置在Dockerfile的暴露端口到宿主機(jī)的高位端口,我們只需用下面帶上-P標(biāo)志的命令。這會(huì)打開(kāi)docker容器的隨機(jī)端口并映射到Dockerfile中定義的端口。下面是使用-P來(lái)打開(kāi)/暴露定義的端口的例子。
# docker run -itd -P httpd
上面的命令會(huì)映射容器的端口到 httpd 容器的 Dockerfile 中定義的80端口上。我們用下面的命令來(lái)查看正在運(yùn)行的容器暴露的端口。
# docker ps
并且可以用下面的curl命令來(lái)檢查。
# curl http://localhost:49153
4. 映射到特定的端口上
我們也可以映射暴露端口或者docker容器端口到我們指定的端口上。要實(shí)現(xiàn)這個(gè),我們用-p標(biāo)志來(lái)定義我們所需的端口。這里是我們的一個(gè)例子。
# docker run -itd -p 8080:80 httpd
上面的命令會(huì)映射(宿主機(jī)的)8080端口到(容器的)80上。我們可以運(yùn)行curl來(lái)檢查這點(diǎn)。
# curl http://localhost:8080
5. 創(chuàng)建自己的網(wǎng)橋
要給容器創(chuàng)建一個(gè)自定義的IP地址,在本篇中我們會(huì)創(chuàng)建一個(gè)名為br0的新網(wǎng)橋。要分配需要的ip地址,我們需要在運(yùn)行docker的宿主機(jī)中運(yùn)行下面的命令。
# 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
6. 創(chuàng)建自己的網(wǎng)橋
要給容器創(chuàng)建一個(gè)自定義的IP地址,在本篇中我們會(huì)創(chuàng)建一個(gè)名為br0的新網(wǎng)橋。要分配需要的ip地址,我們需要在運(yùn)行docker的宿主機(jī)中運(yùn)行下面的命令。
# 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
到這里,橋接后的接口將會(huì)分配給容器在橋接子網(wǎng)內(nèi)的新ip地址。
7. 鏈接到另外一個(gè)容器上
我們可以用Docker將一個(gè)容器連接到另外一個(gè)上。我們可以在不同的容器上運(yùn)行不同的程序,并且相互連接或鏈接。鏈接允許容器間相互連接并從一個(gè)容器上安全地傳輸信息給另一個(gè)容器。要做到這個(gè),我們可以使用--link標(biāo)志。首先,我們使用--name標(biāo)志來(lái)標(biāo)示training/postgres鏡像。
# docker run -d --name db training/postgres
完成之后,我們將容器db與training/webapp鏈接來(lái)形成新的叫web的容器。
# docker run -d -P --name web --link db:db training/webapp python app.py
總結(jié)
Docker網(wǎng)絡(luò)很神奇也好玩,我們可以對(duì)docker容器做很多事情。我們可以把玩這些簡(jiǎn)單而基礎(chǔ)的docker網(wǎng)絡(luò)命令。docker的網(wǎng)絡(luò)是非常先進(jìn)的,我們可以用它做很多事情。
如果你有任何的問(wèn)題、建議、反饋請(qǐng)?jiān)谙旅娴脑u(píng)論欄寫(xiě)下來(lái)以便于我們我們可以提升或者更新文章的內(nèi)容。謝謝! 玩得開(kāi)心!:-)