在Golang中调用Docker,可以使用Docker SDK或者通过命令行来实现。下面是两种方式的示例:
- 使用Docker SDK:
package main
import (
"context"
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
)
func main() {
cli, err := client.NewClientWithOpts(client.FromEnv)
if err != nil {
panic(err)
}
ctx := context.Background()
resp, err := cli.ContainerCreate(ctx, &types.ContainerCreateConfig{
Config: &types.ContainerConfig{
Image: "nginx",
},
})
if err != nil {
panic(err)
}
containerID := resp.ID
err = cli.ContainerStart(ctx, containerID, types.ContainerStartOptions{})
if err != nil {
panic(err)
}
fmt.Println("Container ID:", containerID)
defer func() {
// 停止并删除容器
if err := cli.ContainerStop(ctx, containerID, nil); err != nil {
panic(err)
}
if err := cli.ContainerRemove(ctx, containerID, types.ContainerRemoveOptions{}); err != nil {
panic(err)
}
}()
}
- 使用命令行:
package main
import (
"os/exec"
"log"
)
func main() {
cmd := exec.Command("docker", "run", "-d", "-p", "8080:80", "nginx")
if err := cmd.Run(); err != nil {
log.Fatal(err)
}
}
这些示例演示了如何创建、启动和停止容器,你可以根据自己的需求进行相应的修改。记得在运行前确保已经正确安装了Docker。
内容由零声教学AI助手提供,问题来源于学员提问