偷偷摘套内射激情视频,久久精品99国产国产精,中文字幕无线乱码人妻,中文在线中文a,性爽19p

替代Docker Compose實(shí)現(xiàn)容器雙向聯(lián)通的三種方法

云計(jì)算
目前容器的雙聯(lián)是一個(gè)難點(diǎn),必須手動(dòng)配置。這篇文章介紹了實(shí)現(xiàn)雙聯(lián)的三種方法,對(duì)想玩容器的開發(fā)者來(lái)說(shuō)有一定的幫助作用。

 Docker 是目前最熱門的技術(shù)平臺(tái)之一,他在產(chǎn)生后很短的時(shí)間內(nèi)就獲得了社會(huì)的廣泛關(guān)注。簡(jiǎn)單的說(shuō),他使得開發(fā)者和系統(tǒng)管理員能夠用一種簡(jiǎn)易的方法去部署分布式應(yīng)用。Docker 的生態(tài)系統(tǒng)非常龐大,有很多的工具協(xié)同工作,比如最常用的工具之一:Docker Compose。他使你可以在單個(gè)文件中定義并運(yùn)行多容器應(yīng)用,然后通過(guò)一個(gè)命令執(zhí)行。

一個(gè) docker-compose.yml 文件看起來(lái)是這樣的:

links 選項(xiàng)使容器能夠在一個(gè)運(yùn)行中創(chuàng)建的內(nèi)部網(wǎng)絡(luò)中通訊,并且在運(yùn)行終止后銷毀。在上面的例子中,當(dāng)這個(gè)應(yīng)用啟動(dòng)時(shí),將在 web 容器中的 /etc/hosts 文件中建立一個(gè)別名為“redis”的入口,這使web容器能接通 redis 容器的服務(wù)。

問題

到目前為止,這個(gè)工具使你能夠通過(guò)一個(gè)命令運(yùn)行多容器服務(wù)應(yīng)用。但是,如果你的容器間有復(fù)雜的連通,這就有可能會(huì)導(dǎo)致問題甚至應(yīng)用無(wú)法運(yùn)行。這里復(fù)雜的意思是多于一個(gè)的容器通過(guò) links 選項(xiàng)共用另一個(gè)容器的服務(wù)。舉例來(lái)說(shuō),在上面的應(yīng)用中,web 容器想使用 redis 容器中的服務(wù),如果在 redis 容器中添加“links:-web”并且通過(guò) docker-compose 來(lái)運(yùn)行他,你會(huì)看到如下信息:

事實(shí)上,這是 Docker 的一個(gè)歷史問題,Docker 的網(wǎng)絡(luò)系統(tǒng)曾有一些問題,而這正是一個(gè)典型體現(xiàn)。社區(qū)建議使用 ambassador pattern 作為解決這個(gè)問題的方法,但是這個(gè)解決方法增加了你應(yīng)用的開銷,畢竟這只是一個(gè)變通方法,不是一個(gè) docker 化的解決方式。

因?yàn)槲以谧约旱膽?yīng)用開發(fā)中面臨這個(gè)問題,所以我尋找了一些基于 Docker 平臺(tái)和 Docker 工具的方法,下面是我嘗試成功的三種解決方法。

解決方案1:使用新的 Docker 網(wǎng)絡(luò)接口

Docker 在DockerCon 2015上宣布了很多新的特性和工具,其中一個(gè)進(jìn)步就是新的網(wǎng)絡(luò)系統(tǒng)。新的網(wǎng)絡(luò)類型使我能夠采用一個(gè)簡(jiǎn)單的方法來(lái)實(shí)現(xiàn)一個(gè)有復(fù)雜通訊的多容器應(yīng)用。

使用下面的方法使在同一個(gè)私有網(wǎng)絡(luò)中的兩個(gè)容器相互可見。

創(chuàng)建一個(gè)網(wǎng)絡(luò)

  1. docker network create mynetwork 

通過(guò)列舉所有的網(wǎng)絡(luò),確保這個(gè)網(wǎng)絡(luò)成功創(chuàng)建。

  1. docker network ls 

把容器連接到你的網(wǎng)絡(luò)上

打開一個(gè)終端,執(zhí)行以下命令來(lái)運(yùn)行一個(gè)容器:

  1. docker run -it --publish-service web.mynetwork web 

打開另一個(gè)終端并且運(yùn)行另一個(gè)容器:

  1. docker run -it --publish-service redis.mynetwork redis 

容器相互可見

現(xiàn)在,你可以從第一個(gè)終端 ping redis.mynetwork 并且收到回復(fù)。同樣,從第二個(gè)終端,你可以 ping web.mynetwork 并收到回復(fù)。這是發(fā)布在.下的服務(wù)。

通過(guò)這種方法,你無(wú)需將自己的應(yīng)用與 Docker Compose 鏈接,你只需創(chuàng)建一個(gè)網(wǎng)絡(luò)并且在這個(gè)網(wǎng)絡(luò)上發(fā)布服務(wù)。換句話說(shuō),我們將 docker-compose.yml 的連接替換為一個(gè)網(wǎng)絡(luò)。

雖然這個(gè)功能還在試驗(yàn)中(在本文寫作時(shí)),但我認(rèn)為這種靈活的方式就是運(yùn)行多容器應(yīng)用的未來(lái),所以,建議你遵循 Docker 發(fā)展的方向。

解決方案2:在多主機(jī)網(wǎng)絡(luò)中使用 Docker Swarm 和 Compose

在多主機(jī)網(wǎng)絡(luò)中使用 Swarm 和 Compose 也是一個(gè)實(shí)驗(yàn)性的功能。這個(gè)解決方案比前一個(gè)需要做更多的工作,但是,如果你有很多容器需要連接并且你打算讓他們運(yùn)行在集群中,這是最好的解決方法。

關(guān)于解決的詳細(xì)流程,請(qǐng)參照 GitHub 里的原始功能介紹。首先,在多主機(jī)網(wǎng)絡(luò)中安裝 Swarm,然后你可以在去掉 links 選項(xiàng)后立即運(yùn)行一個(gè)組合應(yīng)用。為什么?因?yàn)閺倪@個(gè)使用 Swarm 集群的多主機(jī)網(wǎng)絡(luò)上啟動(dòng)的每一個(gè)容器都默認(rèn)使用“overlay:multihost”網(wǎng)絡(luò),這意味著他們可以通過(guò)容器名相互訪問。

因?yàn)檫@是實(shí)驗(yàn)性功能,所以請(qǐng)?jiān)?GitHub 給作者反饋。

解決方案3:使用外部 DNS 容器

一個(gè)經(jīng)典的解決方法(我覺得是臨時(shí)方法)是在你的 docker-compose.yml 文件中添加一個(gè)額外的容器。添加如下的容器到你的文件中。

  1. dnsdock: 
  2.  
  3. image: tonistiigi/dnsdock 
  4.  
  5. volumes: 
  6.  
  7. - /var/run/docker.sock:/run/docker.sock 
  8.  
  9. ports: 
  10.  
  11. 172.17.42.1:53:53/udp 

并且,在每個(gè)容器中你需要做如下的操作:

告訴容器 DNS 服務(wù)在什么位置:

  1. dns: 172.17.42.1 

命名每個(gè)容器使其對(duì)于服務(wù)發(fā)現(xiàn)可見

  1. environment: 
  2.  
  3. - DNSDOCK_NAME=web 
  4.  
  5. - DNSDOCK_IMAGE=web 

使用環(huán)境變量來(lái)完成這個(gè)命名。對(duì) redis 容器做同樣的操作(不管你的其他容器是什么)。

現(xiàn)在容器在..docker下相互可見。這就是 redis 容器和 web 容器中的服務(wù)在 web.docker 下通信的方法。

原文鏈接:http://dockone.io/article/929

責(zé)任編輯:xinxiaoliang 來(lái)源: DockOne
相關(guān)推薦

2021-07-13 12:31:27

IT組織改進(jìn)首席技術(shù)官

2013-01-04 15:47:54

Android開發(fā)平鋪UI設(shè)計(jì)

2009-07-08 12:56:32

編寫Servlet

2022-07-13 16:06:16

Python參數(shù)代碼

2010-09-14 15:10:49

CSS注釋

2009-12-11 18:49:39

預(yù)算編制博科資訊

2011-04-18 15:32:45

游戲測(cè)試測(cè)試方法軟件測(cè)試

2024-11-15 07:00:00

Python發(fā)送郵件

2023-08-14 17:58:13

RequestHTTP請(qǐng)求

2011-06-10 10:43:12

Ubuntu應(yīng)用安裝

2009-06-23 10:45:18

Hibernate支持

2010-08-26 16:19:41

DIV圓角

2015-12-11 09:24:38

加密數(shù)據(jù)Linux

2010-09-06 10:04:31

CSS樣式表

2022-02-16 07:00:00

機(jī)器學(xué)習(xí)特征選擇過(guò)濾法

2021-09-10 18:09:42

SQL注入漏洞網(wǎng)絡(luò)攻擊

2021-10-09 06:59:36

技術(shù)MyBatis數(shù)據(jù)

2023-09-25 15:08:43

Python方離群值

2009-07-23 15:17:54

JDBC連接Acces

2016-09-09 13:07:56

CentOSJDKLinux
點(diǎn)贊
收藏

51CTO技術(shù)棧公眾號(hào)