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"
    }
}
目录
相关文章
|
5月前
|
Kubernetes Docker Python
Docker 与 Kubernetes 容器化部署核心技术及企业级应用实践全方案解析
本文详解Docker与Kubernetes容器化技术,涵盖概念原理、环境搭建、镜像构建、应用部署及监控扩展,助你掌握企业级容器化方案,提升应用开发与运维效率。
928 108
|
3月前
|
应用服务中间件 网络安全 nginx
手把手教你使用 Docker 部署 Nginx 教程
本文详解Nginx核心功能与Docker部署优势,涵盖镜像拉取、容器化部署(快速、挂载、Compose)、HTTPS配置及常见问题处理,助力高效搭建稳定Web服务。
1447 4
|
5月前
|
运维 Devops 持续交付
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
在企业IT建设中,软件部署常面临效率低、易出错等问题。通过Docker与自动化工具,可实现高效、标准化和可追溯的部署流程,提升企业应用交付效率,降低运维门槛,助力中小企业实现自动化部署。
364 5
揭秘 Docker 自动部署神器 Websoft9:热门开源软件一键部署
|
4月前
|
JavaScript 算法 前端开发
【Docker项目实战】使用Docker部署paopao-ce微社区
【Docker项目实战】使用Docker部署paopao-ce微社区
444 84
【Docker项目实战】使用Docker部署paopao-ce微社区
|
5月前
|
运维 Cloud Native 开发者
Docker:现代化应用开发与部署的神器
Docker:现代化应用开发与部署的神器
260 101
|
5月前
|
设计模式 Linux 开发工具
Docker部署会吗?
本段内容主要介绍了Docker常用命令、Linux基础指令及日志查看方法,还涉及SpringMVC的执行流程、设计模式与注解,适合用于面试中技术能力的展示。
163 0
|
3月前
|
应用服务中间件 Linux nginx
在虚拟机Docker环境下部署Nginx的步骤。
以上就是在Docker环境下部署Nginx的步骤。需要注意,Docker和Nginix都有很多高级用法和细节需要掌握,以上只是一个基础入门级别的教程。如果你想要更深入地学习和使用它们,请参考官方文档或者其他专业书籍。
185 5
|
4月前
|
存储 Docker Python
docker 部署 sftp
本文介绍SFTP服务的部署与配置,包括users.conf用户配置规则、Docker容器运行命令及上传目录权限说明,重点解析atmoz/sftp镜像的chroot机制与子目录映射,确保用户登录后正确访问/upload目录,并提供Python脚本实现文件上传示例。
392 12
docker 部署 sftp
|
4月前
|
运维 Linux 数据库
基于 Docker 部署 n8n 指南,新手一看就会
本教程详解如何通过 Docker 快速部署开源自动化工具 n8n,适合新手快速上手。内容涵盖官方部署步骤、常见难点及第三方一键部署方案,助你高效搭建自动化工作流平台。
1668 6