docker - 是否有docker API或exec.Command方式从给定的容器名称(而不是容器列表)中检索容器ID?

标签 docker go containers

我正在为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返回一个字节数组。同样,所有参数都应单独列出,如果您将多个由空格分隔的参数作为一个字符串放置,它将无法正常工作。

关于docker - 是否有docker API或exec.Command方式从给定的容器名称(而不是容器列表)中检索容器ID?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63933930/

相关文章:

go - 如何使用 postman 多部分/表单数据传递和解析嵌套对象

css - 布局,其中许多容器需要占用剩余空间,但需要占用一个内部滚动条。 CSS

docker - 可以登录到 docker-registry 但不能推送图像(github)

docker - Docker和Windows 10

docker - Dockerfile 中现有文件的 COPY 神秘失败

class - 如何从函数/方法将数据保存在 Go 结构中?

docker - 如何使用官方 rancher docker 镜像在 docker 中运行 k3s

go - 如何为服务器和事件句柄设计带有单独包的事件驱动 API?

c++ - std 容器是否有插入任何容器的通用方法?

c++ - C++ Small String Optimized (SSO) 如何与容器一起工作?