1. 程式人生 > >10、CentOS7 安裝Docker之擴充套件(容器內部連線不需要在主機上對映埠)

10、CentOS7 安裝Docker之擴充套件(容器內部連線不需要在主機上對映埠)

容器內部連線(不需要在主機上對映埠)

 

上一個技術點展示瞭如何通過暴露埠來開放你的容器到主機網路。不過當你只是想容器內部之間連線時,就不再想把埠暴露給主機網路或外部網路了。
在本文將介紹如何通過Docker link引數來實現這個目的,來確保外部無法訪問你的內部服務。

問題

你想要允許容器內部之間的連線。

方法

通過docker的連結功能來允許容器相互通訊。

討論

繼續我們wordpress的設定,我們打算從wordpress容器分離出mysql資料庫,然後不通過埠對映方式來使它們能夠相互通訊。如圖:


按照如下命令來執行容器,第一個和第二個命令相隔一分鐘執行:

  1. $ docker run --name wp-mysql -e MYSQL_ROOT_PASSWORD=yoursecretpassword -d mysql
  2. $ docker run --name wordpress --link wp-mysql:mysql -p 10003:80 -d  wordpress

在第一個命令中,給容器設定了wp-mysql名稱以便之後引用。並且提供一個環境變數(-e MYSQL_ROOT_PASSWORD=yoursecretpassword)來使mysql容器能夠完成初始化。
在第二個命令中,以wordpress命名容器,並通過–link wp-mysql:mysql來連線wp-mysql與wordpress容器。注意連結不會等待連結容器啟動完成,所以上一步的操作需要等待一分鐘以便讓mysql容器先完成啟動。不過最好的方法是通過docker logs wp-mysql來檢視mysql容器是否已經準備接受連線了。
在這個示例中最重要的是–link引數,這個引數使wordpress容器自動維護/etc/hosts檔案來使wp-mysql mysql等名稱指向mysql容器IP。

啟動次序事項:容器必須按正確的次序來啟動以便存在的容器對映能夠正確的替換。目前為止連結的動態解析不是docker的一項功能。

為了能夠讓容器能夠被連線,比如mysql容器,就需要在建立mysql映象時暴露埠,如暴露3306埠,這個可以在Dockerfile使EXPOSE完成。
至於為什麼為這樣做,請參考http://dockone.io/article/455

 

轉載地址:https://www.centos.bz/2016/11/docker-container-internally-connect/