Golang Docker SDK: 如何让创建的容器一直运行不退出
要让容器不会自动退出并一直运行,可以通过在创建容器时指定一个持久化进程来实现。以下是使用 Golang Docker SDK 的示例代码:
package main
import (
"context"
"fmt"
"github.com/docker/docker/api/types"
"github.com/docker/docker/client"
)
func main() {
cli, err := client.NewClientWithOpts(client.FromEnv)
if err != nil {
panic(err)
}
// 创建容器
resp, err := cli.ContainerCreate(context.Background(), &types.ContainerConfig{
Image: "ubuntu",
Cmd: []string{"sh", "-c", "while true; do sleep 1; done"},
Tty: true,
AttachStdout: true,
AttachStderr: true,
}, nil, nil, "")
if err != nil {
panic(err)
}
// 启动容器
err = cli.ContainerStart(context.Background(), resp.ID, types.ContainerStartOptions{})
if err != nil {
panic(err)
}
fmt.Println("容器已启动,按任意键退出...")
fmt.Scanln()
// 停止容器
err = cli.ContainerStop(context.Background(), resp.ID, nil)
if err != nil {
panic(err)
}
}
上述示例中,我们创建了一个持续运行的容器,它会无限循环执行 sleep 1 命令。你可以根据实际需求修改 Cmd 字段来指定容器中的持久化进程。
在启动容器后,程序会等待用户输入任意键,然后停止容器。这样可以保证容器在运行期间不会自动退出。
请注意,这只是一个简单示例,实际使用时可能需要根据具体需求进行适当的修改和扩展。
原文地址: https://www.cveoy.top/t/topic/fMMh 著作权归作者所有。请勿转载和采集!