Docker學習—Stack


前言:

 前一篇了解Docker使用Swarm集群部署方式,並創建服務到Swarm集群中;如果在集群部署過程中存在大量服務部署、編排那么該如何處理呢?

 那么就需要了解Docker Stack了。

1、Docker Stack是什么?

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

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

 

 

2、Docker Stack相關命令

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

命令 描述
docker stack deploy

部署新stack或更新現有stack

docker stack ls

顯示stack列表

docker stack ps

列出stack中的任務

docker stack rm

移除一個或多個stack

docker stack services

列出stack中的服務 

 

3、Docker Stack應用示例

 1、將本地創建鏡像推送到dockerhub:

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

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

docker tag czidentityserver cwsheng/czidentityserver

  2、添加一個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:

  3、執行命令  

docker stack deploy -c docker-compose.yml stackdemo

 4、查看服務  

docker service ps mygoweb

 5、可以看出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的區別

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

2、compose-file版本支持docker stack 只能支持 version3 以上版本;docker compose支持所有版本

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

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

5、docker stack 強化了service的概念:服務可理解為發布到生產環境時某組容器的預期狀態 ,以及強化了( 復制集、 容器重啟策略、回滾策略、服務更新策略 )等生產特性

總結 

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

  2、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/ 

 


免責聲明!

本站轉載的文章為個人學習借鑒使用,本站對版權不負任何法律責任。如果侵犯了您的隱私權益,請聯系本站郵箱yoyou2525@163.com刪除。



 
粵ICP備18138465號   © 2018-2025 CODEPRJ.COM