【问题标题】:How to return random generated name instead of ID when starting docker container启动docker容器时如何返回随机生成的名称而不是ID
【发布时间】:2022-10-13 20:28:28
【问题描述】:

以分离模式(docker run -d foo)运行 docker 容器会返回容器 id(长版本)。但它可以返回(随机生成的)容器名称吗?由于command reference 没有表示这样的功能,我尝试使用xargs 将返回的id 传递到docker ps 命令中:

docker run -d -p 8080:8080 container-name | xargs -I % docker ps --format '{{.Names}}' --filter id=%

这不起作用,因为 id 没有真正返回,而是仅由 docker run 打印,或者因为我没有正确使用 xargs。

【问题讨论】:

  • But that does not seem to work <= this does not accurately describe your problem
  • 空字节问题 => ... | xargs -0 -I % docker ps --format '{{.Names}}' --filter id=%。请注意,由于您启动的是单个容器,因此使用子 shell 可能更简单:docker ps --format '{{.Names}}' --filter id=$(docker run -d -p 8080:8080 image-name)

标签: docker shell


【解决方案1】:
docker run -d -p 8080:8080 container-name | 
  xargs docker container inspect -f '{{ slice .Name 1 }}'

这使用docker container inspect 而不是docker ps,因为您已经确切知道要查询哪个容器。容器的名称在.Name 字段下,但它有一个前导/,我用slice .Name 1 去掉它,这与Go 中的Name[1:] 相同。

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 2023-03-18
    • 2021-01-08
    • 1970-01-01
    • 2021-12-26
    • 1970-01-01
    • 2022-09-23
    • 2017-10-13
    • 1970-01-01
    相关资源
    最近更新 更多