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 中设置容器自动重启策略。

Golang Docker SDK:设置容器自动重启策略

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

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