Golang Docker SDK:设置容器自动重启策略
Golang Docker SDK:设置容器自动重启策略
在使用 Golang Docker SDK 创建并运行容器时,你可能希望设置容器在异常关闭后的行为,例如自动重启或保持关闭状态。本文将介绍如何使用 RestartPolicy 实现这一目标。
使用 RestartPolicy 控制容器重启行为
RestartPolicy 允许你定义容器在退出时的重启策略。Golang Docker SDK 提供了以下选项:
- always: 容器将在任何情况下自动重启。- no: 容器在退出后不会自动重启。
代码示例
以下代码演示了如何使用 Golang Docker SDK 创建一个 Nginx 容器,并在容器异常关闭后自动重启:gopackage main
import ( 'context' 'fmt' 'github.com/docker/docker/api/types' 'github.com/docker/docker/api/types/container' 'github.com/docker/docker/client' 'log')
func main() { cli, err := client.NewEnvClient() if err != nil { log.Fatal(err) }
config := &container.Config{ Image: 'nginx', }
// 设置容器重启策略为 'always' hostConfig := &container.HostConfig{ RestartPolicy: container.RestartPolicy{Name: 'always'}, }
resp, err := cli.ContainerCreate(context.Background(), config, hostConfig, nil, '') if err != nil { log.Fatal(err) }
err = cli.ContainerStart(context.Background(), resp.ID, types.ContainerStartOptions{}) if err != nil { log.Fatal(err) }
fmt.Println('Container started:', resp.ID)
// 等待容器退出 (可选) _, err = cli.ContainerWait(context.Background(), resp.ID) if err != nil { log.Fatal(err) }
fmt.Println('Container exited:', resp.ID)}
注意:
- 将
RestartPolicy设置为container.RestartPolicy{Name: 'no'}将阻止容器在退出后自动重启。-ContainerWait方法是可选的,用于使程序等待容器退出。如果你不需要等待容器退出,可以删除这部分代码。
希望这篇文章能帮助你理解如何在 Golang Docker SDK 中设置容器自动重启策略。
原文地址: https://www.cveoy.top/t/topic/fMIN 著作权归作者所有。请勿转载和采集!