Docker 容器連接

Docker 容器連接

容器間的鏈接有兩種方法,你選擇其一即可

網(wǎng)絡(luò)端口映射

docker run -d -P  
docker run -d -p

-P :是容器內(nèi)部端口隨機映射到主機的高端口。
-p : 是容器內(nèi)部端口綁定到指定的主機端口。

例如:

docker run -d -P training/webapp python app.py

上面的命令運行完成后,要通過ps查看可以看到對應(yīng)的容器端口和主機端口的映射關(guān)系。

docker run -d -p 5001:5000 training/webapp python app.py

這樣我們就可以通過訪問 127.0.0.1:5001(主機) 來訪問容器的 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

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時請結(jié)合常識與多方信息審慎甄別。
平臺聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

  • 前面我們實現(xiàn)了通過網(wǎng)絡(luò)端口來訪問運行在 docker 容器內(nèi)的服務(wù)。下面我們來實現(xiàn)通過端口連接到一個 docker...
    zwb_jianshu閱讀 62評論 0 0
  • 五、Docker 端口映射 無論如何,這些 ip 是基于本地系統(tǒng)的并且容器的端口非本地主機是訪問不到的。此外,除了...
    R_X閱讀 1,954評論 0 7
  • Dockerfile基本結(jié)構(gòu): 基礎(chǔ)鏡像內(nèi)容:FROM指明base image 維護者信息: 鏡像操作指令:RUN...
    子文1942閱讀 362評論 0 0
  • 0x01 核心概念 Docker鏡像類似于虛擬機鏡像,可以理解為一個面向Docker引擎的只讀模板,包含了文件系統(tǒng)...
    閑云逸心閱讀 4,955評論 0 9
  • 你好,親愛的你。 引用樸樹"平凡之路"中的歌詞,謝謝你伴隨我"走過高山大海,走過人山人海",也謝謝你"經(jīng)冬復(fù)立春"...
    北高地閱讀 449評論 1 4

友情鏈接更多精彩內(nèi)容