Docker Swarm集群中如何指定容器部署节点
Docker    2024-01-05 14:37:47    375    0    0
admin   Docker

在docker swarm 集群中,通常默认随机部署容器到各个节点上。

但是,有时在部署中总会遇到,一些服务要指定在特殊的机器上。

如果碰到这种情况,我们可以利用 docker-compose.yml 文件中的 deploy.placement.constraints 属性:

  1. 指定manager或者work节点

    1. deploy:
    2. replicas: 1
    3. placement:
    4. constraints:
    5. ## 常用方式指定 manager或者work节点
    6. - node.role == worker
  2. 指定主机名

    1. deploy:
    2. replicas: 1
    3. placement:
    4. constraints:
    5. - node.hostname == docker1
  3. 指定node标签

    node label 可以给一个或多个机器打上一个标签,然后再compose文件中指定节点标签,就可以部署在打上对应标签的机器上。具体步骤如下:

    现在主节点机器上对所有节点机器进行打标签操作,命令如下:

    1. docker node update --label-add role=标签名称 主机名

    例如我要对一个主机名为docker1的机器打上一个标签为db的标签

    1. docker node update --label-add role=db docker1

    然后,配置compose文件:

    1. deploy:
    2. replicas: 1
    3. placement:
    4. constraints:
    5. - node.labels.role == db

    删除node标签的命令

    1. docker node update --label-rm role 标签名称
  4. 指定节点id

    先查看node 的id,命令如下:

    1. docker node ls

    docker swarm集群中如何指定容器部署节点

    1. deploy:
    2. replicas: 1
    3. placement:
    4. constraints:
    5. - node.id == xy4ttvg3xqbvwu4lok2xpgmrc
  5. 根据engine标签

    1. deploy:
    2. replicas: 1
    3. placement:
    4. constraints:
    5. - engine.labels.operatingsystem==ubuntu 14.04

Prev: Docker Swarm集群中使用NFS共享存储

Next: 文档第一,会议第二

375
Table of content