我一直在查看与使用Golang运行Docker相关的Docker Engine SDK文档(https://docs.docker.com/engine/api/sdk/) 我想运行容器(这是有详细说明的),但我找不到在运行容器时如何挂载卷.

我的 idea 是使用Docker SDK来运行等价的命令: docker run -v $PWD:/tmp myimage个 但不执行Golang os EXEC库.

这有可能吗?

推荐答案

示例部分提供了您需要的大部分内容:

https://docs.docker.com/engine/api/sdk/examples/#run-a-container

重要的是要记住,docker run ...既能做到这两点

  1. 创建一个容器
  2. 启动一个容器

以及docker run -v is short hand for docker run --mount type=bind,source="$(pwd)"/target,target=/app

    resp, err := cli.ContainerCreate(ctx, &container.Config{
        Image: "alpine",
        Cmd:   []string{"echo", "hello world",},
      },
      &container.HostConfig{
        Mounts: []mount.Mount{
          {
             Type: mount.TypeBind,
             Source: "/local/dir",
             Target: "/app",
          },
        },
     },
     nil,
     "",
   )

如果您只想要一个文件

    resp, err := cli.ContainerCreate(ctx, &container.Config{
        Image: "alpine",
        Cmd:   []string{"echo", "hello world",},
      },
      &container.HostConfig{
        Binds: []string{
          "/local/dir/file.txt:/app/file.txt",
        },
      },
      nil,
      "",
   )

相关信息:

Go相关问答推荐

Go汇编器命名为Constants

golang.org/x/oauth2 oauth2.Config.Endpoint.TokenURL mock:缺少access_token

如何使用我的 struct 化日志(log)记录格式使人panic ?

Golang使用Run()执行的命令没有返回

如何在S汇编器中更高效地将全局数据加载到霓虹灯寄存器?

3 字节切片和有符号整数类型之间的转换

如何从 Go Lambda 函数返回 HTML?

如何将已知类型转换为指向switch 中类型参数的指针?

带有前导零的整数参数被 flag.IntVar 解析为八进制

如何使用管理员权限启动 powershell 进程并重定向标准输入 (os.exec)

致命错误 - 所有 Goroutines 都睡着了!僵局

fmt.Printf() 标志 '0' 不会被字符串忽略

使用innerxml在 Go 中编码 XML 是否仅适用于某些类型?

如何将一片十六进制字节转换为整数

即使一个测试用例失败,如何运行所有测试用例

使用 xml.Name 将 xml 解组为 [] struct

如何在 Unmarshal 中使用泛型(转到 1.18)

Go Flag 用法 描述 包含 Word 值

如何使用 httputil.ReverseProxy 设置 X-Forwarded-For

手动下载并放置一个 golang mod 文件