Docker 容器連接
容器間的鏈接有兩種方法痹愚,你選擇其一即可
網(wǎng)絡(luò)端口映射
docker run -d -P
docker run -d -p
-P :是容器內(nèi)部端口隨機(jī)映射到主機(jī)的高端口。
-p : 是容器內(nèi)部端口綁定到指定的主機(jī)端口入篮。
例如:
docker run -d -P training/webapp python app.py
上面的命令運行完成后陈瘦,要通過ps查看可以看到對應(yīng)的容器端口和主機(jī)端口的映射關(guān)系。
docker run -d -p 5001:5000 training/webapp python app.py
這樣我們就可以通過訪問 127.0.0.1:5001(主機(jī)) 來訪問容器的 5000 端口潮售。這里面默認(rèn)都是綁定TCP要綁定UDP如下命令:
docker run -d -p 127.0.0.1:5000:5000/udp training/webapp python app.py
Docker容器連接
端口映射并不是唯一把 docker 連接到另一個容器的方法痊项。
docker 有一個連接系統(tǒng)允許將多個容器連接在一起,共享連接信息酥诽。
docker 連接會創(chuàng)建一個父子關(guān)系鞍泉,其中父容器可以看到子容器的信息。
容器命名
docker run -d -P --name runoob training/webapp python app.py
通過--name
設(shè)定容器名字
docker inspect -f "{{ .Name }}" aed84ee21bde
通過上述命令可以返回涌入名字肮帐。
容器不可以重名咖驮,一次要修改名字边器,需要停止容器后刪除。
容器連接
如果要連接1個容器托修,需要先創(chuàng)建容器忘巧,然后通過--link
連接。
docker run -d --name db training/postgres
創(chuàng)建數(shù)據(jù)庫容器
docker run -d -P --name web --link db:db training/webapp python app.py
這樣就完成了Web容器和DB容器連接到了一起睦刃。
--link name:alias
name是我們連接容器的名字砚嘴,alias是link的別名。讓我們看如何使用alias涩拙。
下面际长,我們通過ps查看一下:
$ docker ps
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES
349169744e49 training/postgres:latest su postgres -c '/usr About a minute ago Up About a minute 5432/tcp db
aed84ee21bde training/webapp:latest python app.py 16 hours ago Up 2 minutes 0.0.0.0:49154->5000/tcp db/web,web
這里面在Names我們可以看到db/web,這說明db/web的父/子關(guān)系吃环。這里的父容器是db可以訪問子容器web也颤。為此docker在容器之間打開一個安全連接隧道不需要暴露任何端口在容器外部。你會注意到當(dāng)你啟動db容器的時候我們沒有使用-P或者-p標(biāo)識郁轻。我們連接容器的時候我們不需要通過網(wǎng)絡(luò)給PostgreSQL數(shù)據(jù)庫開放端口翅娶。
這樣我們可以通過查詢Docker的環(huán)境變量就可以看到相關(guān)信息了(env命令查看容器的環(huán)境變量)
docker run --rm --name web2 --link db:db training/webapp env
這樣就可以通過容器Names來引用對應(yīng)容器。
PS:容器中往往沒有ping好唯,因此要自己添加apt-get install -yqq inetutils-ping
root@aed84ee21bde:/opt/webapp# ping db
PING db (172.17.0.5): 48 data bytes
56 bytes from 172.17.0.5: icmp_seq=0 ttl=64 time=0.267 ms
56 bytes from 172.17.0.5: icmp_seq=1 ttl=64 time=0.250 ms
56 bytes from 172.17.0.5: icmp_seq=2 ttl=64 time=0.256 ms
關(guān)注我竭沫,關(guān)注測試
FROM:https://blog.csdn.net/crisschan