Golang Docker SDK: 使用 ContainerCreate 和 ContainerStart 创建并运行后台容器,以及设置异常重启策略
是的,使用'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次。容器以非交互模式运行,不会自动退出。
原文地址: https://www.cveoy.top/t/topic/fMIS 著作权归作者所有。请勿转载和采集!