docker - 是否有 docker API 或 exec.Command 方法可以从给定的容器名称(不是容器列表)中检索容器 ID?
问题描述
我正在为 docker 容器开发一个 go CUI。我只需要选定容器名称的容器 ID。
我试过这样:
id, err := exec.Command("/bin/sh", "-c", "docker", fmt.Sprintf("ps --no-trunc -aqf name=%s"),conName).Output()
if err != nil {
log.Fatal(err)
}
fmt.Println("CONTAINER ID:", id)
输出:
CONTAINER ID: []
解决方案
这对我有用(可能你不需要sudo):
id, err := exec.Command("sudo", "docker", "ps", "--no-trunc", "-aqf", fmt.Sprintf("name=%s",conName)).Output()
if err != nil {
log.Fatal(err)
}
fmt.Println("CONTAINER ID:", string(id))
您的错误是, conName 不在括号内,您还必须将 id 转换为字符串,因为 exec.Command 返回一个字节数组。此外,所有参数都应单独列出,如果您将多个用空格分隔的参数作为一个字符串放置,它将不起作用。
推荐阅读
- apache - 如何通过重写将 www.domain.com/example 重定向到 www.example.com?
- python-3.x - 如何计算值与redis-py中的模式匹配的键数?
- java - EmailSender 异常读取响应
- excel - 从网站的组合框中提取所有项目并使用 VBA 粘贴到 Excel 工作表中
- javascript - 使用 typescript 安装 express.js 的正确方法是什么?
- ios - iOS:UIButton 出现,但在 UIView 上不起作用
- java - JCodec 简单 H264 编码/解码
- java - 使用 Timer 绘制跨 JFrame 滚动的图形
- r - 如何将 mutate_all() 与具有多个参数的函数一起使用
- java - 当数据进入数据库时,如何向所有用户推送通知?