Docker學習—Stack

前言:

 前一篇瞭解Docker使用Swarm集羣部署方式,並建立服務到Swarm集羣中;若是在集羣部署過程當中存在大量服務部署、編排那麼該如何處理呢?node

 那麼就須要瞭解Docker Stack了。web

一、Docker Stack是什麼?

 Docker在進行多服務部署和管理時一般會使用Docker Stack來解決大規模部署管理問題,Docker引擎在1.12 版本集成了Docker Swarm, 內置新的容器編排工具docker stack,經過提供指望狀態、滾動升級、簡單易用、擴縮容、健康檢查等特性簡化了應用的管理。docker

 從體系結構上來說,Stack 位於 Docker 應用層級的最頂端。Stack 基於服務進行構建,而服務又基於容器,以下圖所示。ide

 

 

二、Docker Stack相關命令

 命令比較簡單且重點命令已經標記工具

命令 描述
docker stack deploy

部署新stack或更新現有stackui

docker stack ls

顯示stack列表spa

docker stack ps

列出stack中的任務code

docker stack rm

移除一個或多個stackserver

docker stack services

列出stack中的服務 blog

 

三、Docker Stack應用示例

 一、將本地建立鏡像推送到dockerhub:

   注意:在推送本地編譯鏡像時提示:denied: requested access to the resource is denied

  解決辦法:爲鏡像打標 docker tag 鏡像名 dockerhub用戶名/鏡像名

docker tag czidentityserver cwsheng/czidentityserver

  二、添加一個docker-compose.yml文件

version: "3.8"

services:
  czids:
    image: cwsheng/czidentityserver
    ports: 
      - "8090:8090"
    networks: 
      - backend

  visualizer:
    image: dockersamples/visualizer:stable
    ports:
      - "8080:8080"
    stop_grace_period: 1m30s
    volumes:
      - "/var/run/docker.sock:/var/run/docker.sock"
    deploy:
      placement:
        constraints:
          - "node.role==manager"

networks:
  backend:

  三、執行命令  

docker stack deploy -c docker-compose.yml stackdemo

 四、查看服務  

docker service ps mygoweb

 五、能夠看出docker stack和docker compose使用很是相似:

  都是使用yml定義容器編排,且都能操做yml文件中定義的:services、volumes、networks等資源

docker-compose -f docker-compose up

docker stack deploy -c docker-compose.yml stackdemo

  那麼他們有什麼不一樣呢

Docker Stack與Docker Compose的區別

一、來源:docker-compose是一個Python項目,做用在Docker引擎的頂層,必須單獨安裝docker-compose工具包才能將其與Docker一塊兒使用;docker stack 來源docker 引擎原生支持,不準要額外安裝

二、compose-file版本支持docker stack 只能支持 version3 以上版本;docker compose支持全部版本

三、docker stack 不支持 compose file中的「build」指令,docker compose 不支持 deploy(https://docs.docker.com/compose/compose-file/#deploy)

四、docker stack 是swarm mode的一部分, 即便是單機使用, 也須要一個 swarm 節點

五、docker stack 強化了service的概念:服務可理解爲發佈到生產環境時某組容器的預期狀態 ,以及強化了( 複製集、 容器重啓策略、回滾策略、服務更新策略 )等生產特性

總結 

  一、docker-compose 更像是被定義爲單機容器編排工具

  二、docker stack爲適用於生產環境的編排工具

 docker-compose、docker stack工具命令均可以使用version3 編寫的docker-compose.yml 文件上,版本3以前的docker-compose.yml 文件可繼續使用docker-compose工具,若是你僅須要一個能操做多個容器的工具,依舊可使用docker-compose工具。

 docker stack幾乎能作docker-compose全部的事情 (生產部署docker stack表現還更好),若是打算使用docker swarm集羣編排,可遷移到docker stack。

參考:

  https://docs.docker.com/compose/compose-file/ 

相關文章
相關標籤/搜索