• 如何创建service的时候使用template模板?


    什么模板

     

    模板?什么鬼,其实非常的简单!

     

    就是在创建service的时候,直接引用变量,获取变量的值,然后将这些值变成具体的参数值。

     

    可以设置的参数

     

    • --hostname
    • --mount
    • --env

     

    可以使用的变量(占位符),有

     

    变量

    描述

    .Service.ID

    Service ID

    .Service.Name

    Service name

    .Service.Labels

    Service labels

    .Node.ID

    Node ID

    .Node.Hostname

    Node hostname

    .Task.Name

    Task name

    .Task.Slot

    Task slot

     

    示例

     

    来看下面的示例

     

    使用{{占位符}}的方式,来获取对应的变量

     

    docker service create \
    
    --with-registry-auth \
    
    --name=nginx \
    
    --hostname="{{.Node.ID}}-{{.Service.Name}}" \
    
    --env nodename={{.Node.Hostname}} \
    
    172.20.58.152/middleware/nginx:1.21.4

     

    服务部署的详细过程

     

    [root@nccztsjb-node-01 ~]# docker service create \
    >   --with-registry-auth \
    >   --name=nginx \
    >   --hostname="{{.Node.ID}}-{{.Service.Name}}" \
    >   --env nodename={{.Node.Hostname}} \
    >   172.20.58.152/middleware/nginx:1.21.4
    q9jl2qafhr1u6t381zrhqhbgg
    overall progress: 1 out of 1 tasks 
    1/1: running   [==================================================>] 
    verify: Service converged 
    [root@nccztsjb-node-01 ~]# 

     

    查看service的状态,在节点nccztsjb-node-04上运行,NodeID: 7d59usghrgq05k0yh4lbykw5v

    # task在nccztsjb-node-04节点运行
    
    [root@nccztsjb-node-01 ~]# docker service ps nginx
    ID             NAME      IMAGE                                   NODE               DESIRED STATE   CURRENT STATE            ERROR     PORTS
    qtavsnl9567i   nginx.1   172.20.58.152/middleware/nginx:1.21.4   nccztsjb-node-04   Running         Running 52 seconds ago             
    [root@nccztsjb-node-01 ~]# 
    
    # 查看nodeId,是:7d59usghrgq05k0yh4lbykw5v
    
    [root@nccztsjb-node-01 ~]# docker node ls
    ID                            HOSTNAME           STATUS    AVAILABILITY   MANAGER STATUS   ENGINE VERSION
    gxfkhuc95br6ltkhorpw1q4tq *   nccztsjb-node-01   Ready     Active         Reachable        20.10.17
    8zjicf39fk28jn106symk1g5e     nccztsjb-node-02   Ready     Active                          20.10.17
    7d59usghrgq05k0yh4lbykw5v     nccztsjb-node-04   Ready     Active         Reachable        20.10.17
    wnd24l698iruhhp1xw0y3iyig     nccztsjb-node-05   Ready     Active         Leader           20.10.17
    [root@nccztsjb-node-01 ~]# 

     

    看下具体的容器的主机名和变量

     

    环境变量已经成功的获取到主机的名字,nodename=nccztsjb-node-04

    [root@nccztsjb-node-04 ~]# docker exec -it e27cfe0a0986 env
    PATH=/usr/local/sbin:/usr/local/bin:/usr/sbin:/usr/bin:/sbin:/bin
    HOSTNAME=7d59usghrgq05k0yh4lbykw5v-nginx
    TERM=xterm
    nodename=nccztsjb-node-04  #环境变量已经成功的获取到主机的名字
    NGINX_VERSION=1.21.4
    NJS_VERSION=0.7.0
    PKG_RELEASE=1~bullseye
    HOME=/root
    [root@nccztsjb-node-04 ~]# 

     

    查看容器的主机名,确实是NODEID 7d59usghrgq05k0yh4lbykw5v和service的名字nginx的组合

    [root@nccztsjb-node-04 ~]# docker exec -it dc410cd29482 hostname
    7d59usghrgq05k0yh4lbykw5v-nginx
    [root@nccztsjb-node-04 ~]# 

     

    总结

     

    这个有啥作用,就是在创建service的时候,把一些已经预置的动态的变量值,动态获取的过程,更具有灵活性!

  • 相关阅读:
    vue 父子组件通信props/emit
    mvvm
    Ajax
    闭包
    【CSS3】---only-child选择器+only-of-type选择器
    【CSS3】---last-of-type选择器+nth-last-of-type(n)选择器
    【CSS3】---first-of-type选择器+nth-of-type(n)选择器
    【CSS3】---结构性伪类选择器—nth-child(n)+nth-last-child(n)
    【CSS3】---结构性伪类选择器-first-child+last-child
    vue路由切换和用location切换url的区别
  • 原文地址:https://www.cnblogs.com/chuanzhang053/p/16718781.html
Copyright © 2020-2023  润新知