Warning: file_get_contents(/data/phpspider/zhask/data//catemap/5/bash/16.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Bash 如何按名称“docker service ls”排序`_Bash_Docker - Fatal编程技术网

Bash 如何按名称“docker service ls”排序`

Bash 如何按名称“docker service ls”排序`,bash,docker,Bash,Docker,我使用的是Docker Swarm 1.13.1,按名称(A-Z)列出服务是非常实用的 我不认为Docker在本地支持这一壮举,所以我希望有一些awk、sort和其他小技巧 到目前为止,这是我能得到的最接近的结果: root@N01-par1-dev-e:~/deploy-setup# docker service ls | sort -k2,2 -k1 yru8n6zxmp08 consul global 4/4 consul:latest 1lb

我使用的是Docker Swarm 1.13.1,按名称(A-Z)列出服务是非常实用的

我不认为Docker在本地支持这一壮举,所以我希望有一些awk、sort和其他小技巧

到目前为止,这是我能得到的最接近的结果:

root@N01-par1-dev-e:~/deploy-setup# docker service ls | sort -k2,2 -k1
yru8n6zxmp08  consul            global      4/4       consul:latest
1lb98n83fttr  mysql             replicated  1/1       devmtl/percona-fire:5.7.16-10-1
ID            NAME              MODE        REPLICAS  IMAGE
i75t4zef8x8c  papertrail        global      4/4       gliderlabs/logspout:latest
4s14t7f13fp8  portainer         replicated  1/1       portainer/portainer:1.11.3
8wojufyq3dwn  resilio           global      4/4       devmtl/resilio-fire:2.4.4-alpine-0
vn8fhhfvb6pw  sematext          global      4/4       sematext/sematext-agent-docker:1.31.11
mwxtlff6jyl5  thm-s0001-iamfoo  replicated  1/1       devmtl/iam-this-ctn:1.0.1-alpine-0
o8p4q85axkwy  thm-s0002-iambar  replicated  1/1       devmtl/iam-this-ctn:1.0.1-alpine-0
wedrfqzkg3zp  thm-s0003-caply   replicated  1/1       devmtl/nginx-fire:1.10.3-alpine-0
ql9yapc0brnk  thm-s0003-valgo   replicated  1/1       devmtl/caddy:0.9.5-alpine-0
vu3jhyo71oos  traefik           replicated  1/1       traefik:v1.1.2-alpine
或者

root@N01-par1-dev-e:~/deploy-setup# docker service ls | tail -n +2 |  sort -k2,2 -k1
yru8n6zxmp08  consul            global      4/4       consul:latest
1lb98n83fttr  mysql             replicated  1/1       devmtl/percona-fire:5.7.16-10-1
i75t4zef8x8c  papertrail        global      4/4       gliderlabs/logspout:latest
4s14t7f13fp8  portainer         replicated  1/1       portainer/portainer:1.11.3
8wojufyq3dwn  resilio           global      4/4       devmtl/resilio-fire:2.4.4-alpine-0
vn8fhhfvb6pw  sematext          global      4/4       sematext/sematext-agent-docker:1.31.11
mwxtlff6jyl5  thm-s0001-iamfoo  replicated  1/1       devmtl/iam-this-ctn:1.0.1-alpine-0
o8p4q85axkwy  thm-s0002-iambar  replicated  1/1       devmtl/iam-this-ctn:1.0.1-alpine-0
wedrfqzkg3zp  thm-s0003-caply   replicated  1/1       devmtl/nginx-fire:1.10.3-alpine-0
ql9yapc0brnk  thm-s0003-valgo   replicated  1/1       devmtl/caddy:0.9.5-alpine-0
vu3jhyo71oos  traefik           replicated  1/1       traefik:v1.1.2-alpine
或使用2个命令执行此操作:

root@N01-par1-dev-e:~/deploy-setup# echo; \
> docker service ls | head -n 1; \
> docker service ls | tail -n +2 |  sort -k2,2 -k1; echo;

ID            NAME              MODE        REPLICAS  IMAGE
yru8n6zxmp08  consul            global      4/4       consul:latest
1lb98n83fttr  mysql             replicated  1/1       devmtl/percona-fire:5.7.16-10-1
i75t4zef8x8c  papertrail        global      4/4       gliderlabs/logspout:latest
4s14t7f13fp8  portainer         replicated  1/1       portainer/portainer:1.11.3
8wojufyq3dwn  resilio           global      4/4       devmtl/resilio-fire:2.4.4-alpine-0
vn8fhhfvb6pw  sematext          global      4/4       sematext/sematext-agent-docker:1.31.11
mwxtlff6jyl5  thm-s0001-iamfoo  replicated  1/1       devmtl/iam-this-ctn:1.0.1-alpine-0
o8p4q85axkwy  thm-s0002-iambar  replicated  1/1       devmtl/iam-this-ctn:1.0.1-alpine-0
wedrfqzkg3zp  thm-s0003-caply   replicated  1/1       devmtl/nginx-fire:1.10.3-alpine-0
ql9yapc0brnk  thm-s0003-valgo   replicated  1/1       devmtl/caddy:0.9.5-alpine-0
vu3jhyo71oos  traefik           replicated  1/1       traefik:v1.1.2-alpine

提前谢谢

您可以使用
awk
name
列中提取名称,并对生成的名称数组进行排序,以便按照以下顺序打印行:

对于
docker service ls
,存储
名称
模式
的位置以对名称进行子串。然后使用以下方法处理键数组(包含名称)的排序:


检查t以了解asort的另一个示例

那么,到目前为止您尝试了什么?嗨,Pascal,我看到您已经运行了Portainer,为什么不直接在UI中对它们进行排序呢?:)我在终端开发,我从终端启动所有东西。但是,是的,Portainer对其他用户来说仍然很好:)
docker service ls | awk ' 
{
    if (NR == 1) {
        print $0
        names=index($0,"NAME")
        mode=index($0,"MODE")
    }
    else{
        key[NR-2]=substr($0,names,mode-1-names) "\t" NR
        value[NR-2]=$0
    }
}
END {
    asort(key)
    for (i=1; i<=(NR-1); i++) {
        split(key[i],a,"\t")
        print value[a[2]-2]
    }
}'
docker ps -a | awk ' 
{
    if (NR == 1) {
        print $0
        names=index($0,"NAME")
    }
    else{
        key[NR-2]=substr($0, names, 100) "\t" NR
        value[NR-2]=$0
    }
}
END {
    asort(key)
    for (i=1; i<=(NR-1); i++) {
        split(key[i],a,"\t")
        print value[a[2]-2]
    }
}'