什麼模板
模板?什麼鬼,其實非常的簡單!
就是在創建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的時候,把一些已經預置的動態的變量值,動態獲取的過程,更具有靈活性!