Docker 服務

1.  Docker服務html

做爲一名後端攻城獅,對「服務」這個概念必定不陌生。好比,咱們作一個會員系統,它可能會須要數據庫、緩存、消息隊列,這些都是中間件服務,除此之外可能還須要依賴其它的Dubbo服務。nginx

在Docker中,服務就是用於生產環境的容器(「containers in production」)。咱們能夠這樣來理解這句話,當咱們運行某個鏡像時,其實就產生了一個鏡像實例,這個實例咱們把它叫作容器,接下來咱們對它作個升級,好比一些配置負載均衡,配置域名解析映射等,最終它以web服務的形式運行,那麼這個升級版的容器就是Docker服務。能夠設想一下開發一個Java應用程序是怎樣的過程,首先建一個工程,而後編寫代碼,打成jar包,在內網運行,配置nginx,配置告警及監控,通過這一系列操做後,客戶端才能經過公網訪問到這個服務。(PS:類比Java的話,鏡像就是類,容器就是對象,服務就是一個成型的APP產品,或者叫服務)web

一個服務只運行一個映像,可是它將鏡像運行的方式進行了編碼,好比應該使用什麼端口,應該運行多少個容器副本,以便服務具備所需的能力,等等。能夠經過改變運行該軟件的容器實例的數量來對服務進行擴容,從而爲流程中的服務分配更多的計算資源。docker

幸運的是,使用Docker平臺很容易定義、運行和擴容服務。只須要寫一個docker-compose.yml文件便可。數據庫

2.  第一個docker-compose.yml文件後端

建立一個文件,文件命名爲docker-compose.yml,將下列內容粘貼到文件中,保存緩存

一個docker-compose.yml文件是一個YAML文件,它定義了Docker容器在生產環境中的行爲。網絡

這個docker-compose.yml文件告訴Docker要作如下事情:app

  • 從註冊中心上pull(拉取)鏡像
  • 以web服務的形式運行該映像的5個實例,限制每一個實例最多隻能使用CPU單個內核時間的10%(也能夠是「1.5」,表示每一個實例只能使用1.5個內核)和50MB內存
  • 若是一個容器失敗,當即重啓它
  • 將主機上的4000端口映射到web的80端口
  • 指示web容器經過叫webnet的負載均衡網絡共享80端口
  • 用默認設置定義webnet網絡

3.  運行新的負載均衡的APP負載均衡

首先,運行

接下來,給APP起個名字,好比叫getstartedlab

咱們的單個服務堆棧在一臺主機上運行了5個容器實例,讓咱們來看一看

除了「docker service ls」,咱們還能夠經過「docker stack services」來查看

還能夠經過修改docker-compose.yml來動態的擴展app,修改成後須要再執行一次

完整的演示

4.  備忘單

 

原文出處:https://www.cnblogs.com/cjsblog/p/10775727.html

相關文章
相關標籤/搜索