【问题标题】:How to get the name of a Docker container using JavaScript?如何使用 JavaScript 获取 Docker 容器的名称?
【发布时间】:2017-04-21 08:33:19
【问题描述】:

我希望有人能够帮助我。我正在使用 Dockerode 通过 JavaScript 对我的 Docker 容器进行操作。

我很难获得单个容器的名称。请求是“获取 id 为 XXX 的容器的名称”,但我无法使其工作。

为此,我使用了listContainers,并尝试使用这些选项:

docker.listContainers({id: idContainer}, Meteor.bindEnvironment(function(err, containers) {
  if (containers != null) {
      containers.forEach(Meteor.bindEnvironment(function(containerInfo) {
          if(containerInfo.Names[0].startsWith("/")){
             containerInfo.Names[0] = containerInfo.Names[0].substr(1);
             console.log( containerInfo.Names[0]);
          }
      }));
  }
}));

其中 idContainer 是已知容器的 id

但输出包含所有容器的名称。

我真的希望有人可以帮助我

【问题讨论】:

    标签: javascript docker docker-container docker-api


    【解决方案1】:

    查看Docker API docs,我认为您的调用参数可能格式不正确。

    代替:

    docker.listContainers({ id: idContainer }, function (...) {...});
    

    您需要指定:

    docker.listContainers({ filters: { id: idContainer } }, function (...) {...});
    

    在文档中,id 参数位于过滤器参数组内。

    【讨论】:

    • 奇怪的是它仍然把所有的容器都还给我,你知道为什么吗?
    • 我没有处理过docker api。要进行调查,您可以查看发出的 req 结构并将其与测试进行比较,您可以通过 curl 或 postman 直接对 docker api 守护进程执行相同的命令。
    • 感谢您的建议,我将您的答案标记为正确的,因为它是正确的(是的,它没有意义)谢谢您
    • 它激发了我的好奇心,所以我在 stackoverflow.com/questions/39976683/…nathanleclaire.com/blog/2015/11/12/… 的帮助下尝试了 curl。我发现在执行filters: { id: someid }fitlers: { id: [someid] } 时,该命令在直接api 中不起作用。由于某种原因,它需要 id 作为数组。例如:curl -g --unix-socket /var/run/docker.sock http:/containers/json'?filters=%7B%22id%22%3A%5B%2294115da2a95d%22%5D%7D'
    • 感谢您的帮助,是的,我已经创建了这个 Github 问题 github.com/docker/compose/issues/2515,这家伙必须添加 [括号]。但是对我来说还是不行,对你有用吗?
    猜你喜欢
    • 2015-10-31
    • 2020-10-14
    • 1970-01-01
    • 1970-01-01
    • 2017-10-30
    • 1970-01-01
    • 2019-11-04
    • 2021-08-20
    • 1970-01-01
    相关资源
    最近更新 更多