Docker
目录
Docker 对象
▸ 列表容器(options?
):Promise
<unknown
>
要获取容器列表,请执行以下作:
const containers = await ddClient.docker.listContainers();
▸ 列表图片(options?
):Promise
<unknown
>
要获取本地容器镜像列表,请执行以下作:
const images = await ddClient.docker.listImages();
有关这些方法的详细信息,请参阅 Docker API 参考。
弃用了对 Docker 对象的访问
以下方法已弃用,并将在未来版本中删除。使用上面指定的方法。
const containers = await window.ddClient.listContainers();
const images = await window.ddClient.listImages();
Docker 命令
扩展还可以直接执行docker
命令行。
▸ 执行(cmd
,args
):Promise
<
ExecResult
>
const result = await ddClient.docker.cli.exec("info", [
"--format",
'"{{ json . }}"',
]);
结果包含已执行命令的标准输出和标准错误:
{
"stderr": "...",
"stdout": "..."
}
在此示例中,命令输出为 JSON。 为方便起见,命令 result 对象还具有轻松解析它的方法:
result.lines(): string[]
拆分输出行。result.parseJsonObject(): any
解析格式正确的 JSON 输出。result.parseJsonLines(): any[]
将每个输出行解析为 JSON 对象。
▸ 执行(cmd
,args
,options
):void
上面的命令将输出流式传输为执行 Docker 命令的结果。 如果您需要将输出作为流获取或命令输出太长,这将非常有用。
await ddClient.docker.cli.exec("logs", ["-f", "..."], {
stream: {
onOutput(data) {
if (data.stdout) {
console.error(data.stdout);
} else {
console.log(data.stderr);
}
},
onError(error) {
console.error(error);
},
onClose(exitCode) {
console.log("onClose with exit code " + exitCode);
},
splitOutputLines: true,
},
});
扩展创建的子进程将被终止 (SIGTERM
),当您关闭 Docker Desktop 中的仪表板或退出扩展 UI 时。
如果需要,您还可以使用exec(streamOptions)
call 以杀死 (SIGTERM
) 进程。
const logListener = await ddClient.docker.cli.exec("logs", ["-f", "..."], {
stream: {
// ...
},
});
// when done listening to logs or before starting a new one, kill the process
logListener.close();
这exec(streamOptions)
API 还可用于侦听 docker 事件:
await ddClient.docker.cli.exec(
"events",
["--format", "{{ json . }}", "--filter", "container=my-container"],
{
stream: {
onOutput(data) {
if (data.stdout) {
const event = JSON.parse(data.stdout);
console.log(event);
} else {
console.log(data.stderr);
}
},
onClose(exitCode) {
console.log("onClose with exit code " + exitCode);
},
splitOutputLines: true,
},
}
);
注意
您不能使用它来将命令链接在单个
exec()
调用(如docker kill $(docker ps -q)
或在命令之间使用 PIPE 进行)。您需要调用
exec()
对于每个命令并解析结果,以将参数传递给下一个命令(如果需要)。
有关这些方法的详细信息,请参阅 Exec API 参考。
已弃用的 Docker 命令执行
此方法已弃用,并将在将来的版本中删除。使用下面指定的那个。
const output = await window.ddClient.execDockerCmd(
"info",
"--format",
'"{{ json . }}"'
);
window.ddClient.spawnDockerCmd("logs", ["-f", "..."], (data, error) => {
console.log(data.stdout);
});