是的,使用'hostConfig.RestartPolicy'可以设置容器在异常关闭后的重启策略。

在你提供的代码中,'hostConfig.RestartPolicy'被设置为'on-failure',并且'MaximumRetryCount'被设置为10。这意味着如果容器异常关闭,Docker将自动重启容器,并最多重试10次。

如果你想让容器一直后台运行,可以在创建容器时设置'ContainerConfig.Tty'为'false',这样容器将以非交互模式运行,不会自动退出。

以下是一个示例代码片段,展示了如何创建一个后台运行的容器,并设置重启策略:

package main

import (
	"context"
	"fmt"

	"github.com/docker/docker/api/types"
	"github.com/docker/docker/api/types/container"
	"github.com/docker/docker/client"
)

func main() {
	cli, err := client.NewEnvClient()
	if err != nil {
		panic(err)
	}

	config := &container.Config{
		Image: "nginx",
		Tty:   false, // 设置为非交互模式
	}

	hostConfig := &container.HostConfig{
		RestartPolicy: container.RestartPolicy{
			Name:              "on-failure",
			MaximumRetryCount: 10,
		},
	}

	resp, err := cli.ContainerCreate(context.Background(), config, hostConfig, nil, nil, "my-nginx")
	if err != nil {
		panic(err)
	}

	err = cli.ContainerStart(context.Background(), resp.ID, types.ContainerStartOptions{})
	if err != nil {
		panic(err)
	}

	fmt.Println("Container started:", resp.ID)
}

在这个示例中,我们创建了一个名为'my-nginx'的容器,使用了'nginx'镜像,并设置了重启策略为'on-failure',最多重试10次。容器以非交互模式运行,不会自动退出。

Golang Docker SDK: 使用 ContainerCreate 和 ContainerStart 创建并运行后台容器,以及设置异常重启策略

原文地址: https://www.cveoy.top/t/topic/fMIS 著作权归作者所有。请勿转载和采集!

免费AI点我,无需注册和登录