AWi*_*ion 5 go docker docker-api
当前,要使用golang api将文件放入容器中,我首先必须创建容器,然后使用CopyToContainer函数(下面的示例)。
是否可以创建一个容器并为创建时指定的容器指定文件,而无需先将文件放在文件系统上?
示例1)
func main() {
cli, err := client.NewEnvClient()
if err != nil {
panic(err)
}
resp, err := cli.ContainerCreate(context.Background(),
&container.Config{
Image: "alpine",
Cmd: []string{"ls", "/"},
}, nil, nil, "testContainer")
if err != nil {
panic(err)
}
fmt.Printf("Created: %v\n", resp.ID)
cli.CopyToContainer(context.Background(), resp.ID, "/", getTar(),types.CopyToContainerOptions{})
}
func getTar() io.Reader {
...
}
Run Code Online (Sandbox Code Playgroud)
编辑:
-代码间距。
我找到了这个解决方案,但我无法让文件显示在容器中。尝试一下,让我知道它是否适合您!
var buf bytes.Buffer
tw := tar.NewWriter(&buf)
err = tw.WriteHeader(&tar.Header{
Name: filename, // filename
Mode: 0777, // permissions
Size: int64(len(content)), // filesize
})
if err != nil {
return nil, fmt.Errorf("docker copy: %v", err)
}
tw.Write([]byte(content))
tw.Close()
// use &buf as argument for content in CopyToContainer
cli.CopyToContainer(context.Background(), resp.ID, "/", &buf,types.CopyToContainerOptions{})
Run Code Online (Sandbox Code Playgroud)
| 归档时间: |
|
| 查看次数: |
456 次 |
| 最近记录: |