gpt4 book ai didi

node.js - 如何从一个 docker 容器获取正在运行的服务列表

转载 作者:太空宇宙 更新时间:2023-11-03 21:48:53 25 4
gpt4 key购买 nike

我有一个在 Docker 中运行的 Node.js 应用程序(使用 docker-compose)。

我希望它使用正在运行的其他服务的列表(名称、标签等)。

有没有一种方法从一个容器内获取我可以访问的其他服务的列表?

这是一个例子:

version: "3"
services:
service_1:
container_name: service_1
labels: label_1
service_2:
container_name: service_2
labels: label_2
service_3
container_name: service_3
labels: label_3

service_1 中,是否有办法获取其他服务(service_2、service_3 等)的列表?

最佳答案

如果将 Docker UNIX 套接字挂载到容器中,则可以从容器内使用 Docker 引擎 REST API。
为此,您需要将 -v/var/run/docker.sock/var/run/docker.sock 附加到用于启动容器的命令。之后,您可以使用该套接字调用 API:

npm i -s request request-promise-native/yarn add request request-promise-native

const request = require("request-promise-native")
const sock = "unix:/var/run/docker.sock"
const endpoint = `http://${sock}/v1.24`

function getRunningContainers () {
const endpoint = `${endpoint}/containers/json`
return request.get(endpoint)
}

(async () => {
try {
let containers = await getRunningContainers()
} catch (e) {
console.error(e)
}

console.log(containers)
})()

可以在此处找到引擎 API 的文档:https://docs.docker.com/engine/api/v1.24/

关于node.js - 如何从一个 docker 容器获取正在运行的服务列表,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/50652146/

25 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com