如何使用Shell脚本(在docker swarm中为堆栈名称)获取docker服务名称前缀的首字母

时间:2019-02-09 04:09:53

标签: shell docker docker-swarm

我想从中获取docker服务名称的初始前缀(“ UAT_postgres1.gbc38equ81vj6skoknsu83ypz”,因为我在这里也是UAT,所以我想将它存储在变量中),然后在运行Shell脚本时在以后的某个时间点使用它,脚本执行。 任何人都可以请帮助我。 谢谢

1 个答案:

答案 0 :(得分:1)

既然您知道它是堆栈的名称,为什么不使用它而不是用管道连接到awk:

NAME=$(docker stack ls --format {{.Name}})

如果您只有容器ID,没问题:

NAME=$(docker inspect --format='{{index .Config.Labels "com.docker.stack.namespace" }}' <container ID>)

如果要改为使用服务ID,则几乎相同:

NAME=$(docker inspect --format='{{index .Spec.Labels "com.docker.stack.namespace" }}' <service ID>)

几乎所有docker命令都可以通过这种方式进行格式化,以获取所需的内容。这是简单的示例,但是在其他情况下非常有用。