Docker Swarm 服务部署条件约束

简介: Docker Swarm 服务部署条件约束

Docker Swarm 服务部署条件约束可以匹配 node 标签和 engine 标签, engine.labels 适用于 Docker Engine 标签,如操作系统,驱动程序等, node.labels 适用于人为添加到节点的标签,详情参考笔记:Docker Swarm 节点标签


示例:

  • Service 方式
$ docker service create \
  --name nginx_2 \
  --constraint 'node.labels.role == gateway' \
  nginx点击复制复制失败已复制


  • Stack 方式
version: '3.6'
services:
    mycat:
         image: nginx
         ports:
           - target: 8080
             published: 8080
             protocol: tcp
             mode: ingress
         deploy:
           mode: global
           placement:
              constraints:                      # 添加条件约束
                - node.labels.role==gateway
           restart_policy:
             condition: on-failure
             max_attempts: 3点击复制复制失败已复制


条件约束汇总如下:

类别 属性 示例
node.id ID node.id==sxkwoaik9bbj2oihxqrxxjxtc
node.hostname Description. Hostname node.hostname!=node1
node.role Spec. Role node.role==manager
node.labels 自定义标签,Spec. Lables中键值对 node.labels.role==gateway
engine.labels Docker 引擎自带标签 engine.labels.operatingsystem==ubuntu 20.04


附:节点信息示例

{
    "ID": "sxkwoaik9bbj2oihxqrxxjxtc",
    "Version": {
        "Index": 34
    },
    "CreatedAt": "2020-12-25T11:58:21.941243809Z",
    "UpdatedAt": "2020-12-25T13:12:03.62858601Z",
    "Spec": {
        "Labels": {
            "role": "gateway"
        },
        "Role": "manager",
        "Availability": "active"
    },
    "Description": {
        "Hostname": "node1",
        "Platform": {
            "Architecture": "x86_64",
            "OS": "linux"
        },
        "Resources": {
            "NanoCPUs": 2000000000,
            "MemoryBytes": 4127367168
        },
        "Engine": {
            "EngineVersion": "19.03.8",
            "Plugins": [
                {
                    "Type": "Log",
                    "Name": "awslogs"
                },
                {
                    "Type": "Log",
                    "Name": "fluentd"
                },
                {
                    "Type": "Log",
                    "Name": "gcplogs"
                },
                {
                    "Type": "Log",
                    "Name": "gelf"
                },
                {
                    "Type": "Log",
                    "Name": "journald"
                },
                {
                    "Type": "Log",
                    "Name": "json-file"
                },
                {
                    "Type": "Log",
                    "Name": "local"
                },
                {
                    "Type": "Log",
                    "Name": "logentries"
                },
                {
                    "Type": "Log",
                    "Name": "splunk"
                },
                {
                    "Type": "Log",
                    "Name": "syslog"
                },
                {
                    "Type": "Network",
                    "Name": "bridge"
                },
                {
                    "Type": "Network",
                    "Name": "host"
                },
                {
                    "Type": "Network",
                    "Name": "ipvlan"
                },
                {
                    "Type": "Network",
                    "Name": "macvlan"
                },
                {
                    "Type": "Network",
                    "Name": "null"
                },
                {
                    "Type": "Network",
                    "Name": "overlay"
                },
                {
                    "Type": "Volume",
                    "Name": "local"
                }
            ]
        },
        "TLSInfo": {
            "TrustRoot": "******",
            "CertIssuerSubject": "******",
            "CertIssuerPublicKey": "********"
        }
    },
    "Status": {
        "State": "ready",
        "Addr": "10.87.23.111"
    },
    "ManagerStatus": {
        "Leader": true,
        "Reachability": "reachable",
        "Addr": "10.87.23.1"
    }
}
目录
相关文章
|
1小时前
|
Cloud Native 测试技术 数据安全/隐私保护
云原生之使用Docker部署Teedy轻量级文档管理系统
【5月更文挑战第8天】云原生之使用Docker部署Teedy轻量级文档管理系统
19 1
|
1小时前
|
Cloud Native 安全 Linux
【云原生之Docker实战】使用Docker部署mBlog微博系统
【5月更文挑战第10天】使用Docker部署mBlog微博系统
10 2
|
1小时前
|
JavaScript 前端开发 测试技术
Docker环境下部署Ghost开源内容管理系统
【5月更文挑战第9天】Docker环境下部署Ghost开源内容管理系统
8 0
|
1小时前
|
Cloud Native 测试技术 Linux
云原生之使用Docker部署homer静态主页
【5月更文挑战第7天】云原生之使用Docker部署homer静态主页
12 0
|
1小时前
|
监控 Cloud Native 测试技术
云原生之使用Docker部署ServerBee服务器监控工具
【5月更文挑战第6天】云原生之使用Docker部署ServerBee服务器监控工具
13 1
|
1小时前
|
存储 安全 开发者
【Docker 专栏】Docker 与云存储服务的集成
【5月更文挑战第9天】在数字化时代,Docker和云存储服务的结合为企业和开发者提供了强大工具。Docker的高效性、可移植性和隔离性,加上云存储的扩展性、高可靠性和高可用性,通过集成可以实现数据持久化、便捷部署和资源优化。常见的集成包括AWS S3、Azure Blob Storage和Google Cloud Storage。集成时需注意安全、性能和兼容性问题,未来集成将更加紧密和智能化,助力企业创造更大价值。
【Docker 专栏】Docker 与云存储服务的集成
|
1小时前
|
机器学习/深度学习 监控 Kubernetes
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
【5月更文挑战第9天】本文探讨了Docker容器服务的自动扩展与缩容原理及实践,强调其在动态业务环境中的重要性。通过选择监控指标(如CPU使用率)、设定触发条件和制定扩展策略,实现资源的动态调整。方法包括云平台集成和使用Kubernetes等框架。实践中,电商平台和实时数据处理系统受益于此技术。注意点涉及监控数据准确性、扩展速度和资源分配。未来,智能算法将提升扩展缩容的效率和准确性,成为关键技术支持。
【Docker 专栏】Docker 容器内服务的自动扩展与缩容
|
1小时前
|
前端开发 应用服务中间件 nginx
前后端分离项目Docker部署指南(下)
前后端分离项目Docker部署指南(下)
|
1小时前
|
NoSQL 关系型数据库 网络安全
前后端分离项目Docker部署指南(上)
前后端分离项目Docker部署指南(上)
|
1小时前
|
监控 Docker 容器
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略
【5月更文挑战第8天】本文探讨了Docker Swarm集群的扩展与缩容策略。集群扩展可提高性能、增强可用性和适应业务发展,可通过手动或自动方式实现。缩容则需考虑业务需求、资源利用率和节点状态,可手动或按策略执行。关键步骤包括添加/移除节点及任务迁移。注意数据同步、监控评估和测试验证。案例分析和总结强调了灵活管理对保持集群最佳状态的重要性。
【Docker 专栏】Docker Swarm 集群的扩展与缩容策略