在 Go 语言中,可以使用 Docker API 来为容器设置重启策略。以下是一个示例代码:
package main
import (
"context"
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
)
func main() {
ctx := context.Background()
cli, err := client.NewClientWithOpts(client.FromEnv)
if err != nil {
panic(err)
}
containerConfig := &types.ContainerConfig{
Image: "nginx",
Cmd: []string{"nginx", "-g", "daemon off;"},
}
hostConfig := &types.HostConfig{
// 设置重启策略
RestartPolicy: types.RestartPolicy{
Name: "on-failure",
MaximumRetryCount: 3,
},
}
resp, err := cli.ContainerCreate(ctx, containerConfig, hostConfig, nil, "")
if err != nil {
panic(err)
}
if err = cli.ContainerStart(ctx, resp.ID, types.ContainerStartOptions{}); err != nil {
panic(err)
}
fmt.Println(resp.ID)
}
在上面的示例中,我们通过 types.RestartPolicy 结构体设置了重启策略。具体来说,我们定义了一个 Name 字段,在其中指定了容器停止时应该采取的操作。这里我们选择的是“on-failure”,即只有在容器退出时才会自动重启。另外,我们还设置了最大重试次数。
需要注意的是,在使用 Docker API 时需要具有足够的权限。如果没有正确的权限,可能会遇到一些问题。同时,在编写代码时应该注意安全性和可靠性等方面的问题。




