如何使用JavaScript获取Docker容器的名称?
我希望有人能帮助我。我使用JavaScript在Docker容器上执行操作 我很难找到一个容器的名称。请求是“获取id为XXX的容器的名称”,但我无法使其正常工作 为此,我使用了如何使用JavaScript获取Docker容器的名称?,javascript,docker,docker-container,docker-api,Javascript,Docker,Docker Container,Docker Api,我希望有人能帮助我。我使用JavaScript在Docker容器上执行操作 我很难找到一个容器的名称。请求是“获取id为XXX的容器的名称”,但我无法使其正常工作 为此,我使用了listContainers,并尝试使用以下选项: docker.listContainers({id: idContainer}, Meteor.bindEnvironment(function(err, containers) { if (containers != null) { container
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
但输出包含所有容器的名称
我真的希望有人能帮我看看,我认为你的通话参数可能有问题
而不是:
docker.listContainers({ id: idContainer }, function (...) {...});
您需要指定:
docker.listContainers({ filters: { id: idContainer } }, function (...) {...});
在文档中,id参数在过滤器参数组中。奇怪的是,它仍然返回我所有的容器,你知道为什么吗?我没有处理docker api。要进行调查,您可以查看req结构并将其与测试进行比较,您可以通过curl或postman直接对docker api守护进程执行相同的命令。感谢您的建议,我将您的答案标记为正确答案,因为它是正确的(是的,没有意义)谢谢它满足了我的好奇心,所以我在:和的帮助下尝试了卷曲。我发现,当执行
过滤器:{id:someid}
时,该命令在DirectAPI中不起作用,但是过滤器:{id:[someid]}
。出于某种原因,它需要id作为数组。例如:curl-g--unixsocket/var/run/docker.sock http:/containers/json'?过滤器=%7B%22id%22%3A%5B%2294115da2a95d%22%5D%7D'
感谢您的帮助,是的,我发现了这个Github问题,这个家伙不得不添加[括号]。但对我来说还是不行,对你有用吗?