Docker-学习总结(集群管理-Docker Stack+Portainer图形)

本文介绍了Docker Stack的概念,作为Docker Swarm上的多服务部署解决方案,对比了它与Docker Compose的区别。接着,通过实践展示了如何部署一个简单的web服务,添加监控visualizer,进行滚动更新以及资源控制。最后,详细说明了Portainer图形界面的安装和使用,提供了一种直观管理Docker Stack的方式。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

Docker Stack

概念

  • 技术由来:Docker Swarm在大规模场景下的多服务部署和管理是一件很难的事情,为解决此问题,产生了Docker stack,
    Docker Stack基于Docker Swarm之上来完成对多服务进行部署和管理的
  • 实现方式:通过使用与Compose一样的yml文件中定义应用,然后通过 docker stack deploy 命令完成部署和管理
  • 体系结构:Stack 位于 Docker 应用层级的最顶端。Stack 基于服务进行构建,而服务又基于容器
  • Stack与Compose区别:
    • Docker Stack不支持bulid指令,使用的镜像必须是构建好的,而Docker Compose可以使用,相对而言Docker Compose更适合开发使用
    • Docker Stack是集成在Docker引擎中的,直接使用命令即可,而Docker Compose 则是一个Python项目,使用Docker API规范操作容器
    • Docker Stack不支持version 2的yml文件,至少version 3以上。而Docker Compose 对version 2或3都可以处理
    • Docker Stack 更适合处理多服务也能处理单机服务,而Docker Compose 仅能处理单机服务,所以Docker Stack 可以把Docker Compose的工作都处理了,占据了主导地位。

命令

[root@node1 reg.mydocker.com]# docker stack --help
#格式
Usage:	docker stack [OPTIONS] COMMAND
#Docker stack任务管理
Manage Docker stacks
#选项
Options:
      --orchestrator string   Orchestrator to use (swarm|kubernetes|all)|选择协调器是swarm还是k8s或者2者
#子命令
Commands:
  deploy      Deploy a new stack or update an existing stack| 加载一个新的stack任务或者更新某一stack任务
  ls          List stacks|显示所有stack任务的列表
  ps          List the tasks in the stack|列出某一个stack的详细任务
  rm          Remove one or more stacks|删除一个或者多个stack任务
  services    List the services in the stack|列出某一个stack的所有服务

Docker stack 实践

实践环境

主机 IP 作用
node1 192.168.27.11 安装有Docker(18.09.6)、集群管理节点、可访问私有仓库
node2 192.168.27.12 安装有Docker(18.09.6)、集群工作节点、可访问私有仓库
node3 192.168.27.13 安装有Docker(18.09.6)、集群工作节点、可访问私有仓库
repository 192.168.27.12 搭建有harbor私有仓库,作为集群操作中的镜像使用仓库

实践过程

部署一个简单服务

官方compose文件模板:https://docs.docker.com/compose/compose-file/

  1. 制作一个yml文件,开启一个web服务,使用nginx容器,生成3个副本,自定义卷与网络
[root@node1 stack]# vim docker-stack.yml
version: '3'
services:
  web:
    image: library/nginx
    ports:
      - "80:80"
    volumes:
      - web-data:/usr/share/nginx/html
    networks:
      - vm_net
    deploy:
      replicas: 3
volumes:
  web-data:
networks:
  vm_net:
  1. stack 运行、查看、测试
[root@node1 stack]# docker stack deploy -c docker-stack.yml my_cluster
prots Additional property prots is not allowed
[root@node1 stack]# vim docker-stack.yml
[root@node1 stack]# docker stack deploy -c docker-stack.yml my_cluster
Creating network my_cluster_vm_net
Creating service my_cluster_web
[root@node1 stack]# docker service ls
ID                  NAME                MODE                REPLICAS            IMAGE               PORTS
e0eo4mb2xnxa        my_cluster_web      replicated          3/3                 nginx:latest        *:80->80/tcp
[root@node1 stack]# docker service ps my_cluster_web
ID                  NAME                IMAGE               NODE                DESIRED STATE       CURRENT STATE       ERROR               PORTS
uvq3ayobwam1        my_cluster_web.1    nginx:latest        node1               Running             Running 17 seconds ago
ar53a9v7o94t        my_cluster_web.2    nginx:latest        node3               Running             Running 16 seconds ago
ulji2jzh25qq        my_cluster_web.3    nginx:latest        node2               Running             Running 16 seconds ago
[root@node1 stack]# curl 192.168.27.11
<!DOCTYPE html>
<html>
<head>
<title>Welcome to nginx!<
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值