我创建了一个对接器容器,但似乎无法用docker和它的format参数(它使用Go模板)解析它的属性。
任何想法都很感激。
环境准备部分中的docker命令。
docker container ls --format '{{ .Ports }}'打印应该会产生docker container ls --format '{{ .Ports }}'试图在冒号之后获取端口范围部分的[0.0.0.0 80->80/tcp]
docker container ls --format '{{ split .Ports ":" }}'),这将生成数组
返回类型( []string. )是
docker container ls --format '{{ len (split .Ports ":") }}') .docker container ls --format '{{ index (split .Ports ":") 0 }}')的结果与预期的0.0.0.0相同。docker container ls --format '{{ index (split .Ports ":") 1 }}')无法执行模板:模板::1:2:执行“at :错误调用索引:反射:超出范围的切片索引,而不是80->80/tcp .发布于 2022-09-21 09:06:26
为了访问字符串数组元素,我找到了一个解决方案。由于这个问题侧重于--format参数中的Go模板部分,因此我将只编写这方面的内容。
{{ index (split .Ports ":") 1 }}会产生一个错误,因为在这种情况下,index只是错误的函数。若要访问数组元素,请使用slice
使用[80->80/tcp].访问第二个数组元素(基于零的索引),这将产生[80->80/tcp].。
如果需要80->80/tcp.输出,可以使用""作为分隔符使用join转换slice对象,去掉输出:{{ join ( slice (split .Image ":") 1 ) "" }}生成string中的方括号
完整的命令是docker container ls --format '{{ join ( slice ( split .Ports ":" ) 1 ) "" }}'。请记住,Go模板使用一种前缀表示法,这种表示法看起来可能不那么常见。
https://stackoverflow.com/questions/73664732
复制相似问题