golang docker sdk中ContainerCreate方法创建容器后调用ContainerStart方法后容器就停止了如何设置让容器不会退出一直在后台运行
要让容器在后台持续运行,可以通过设置HostConfig的AutoRemove字段为false,以防止容器在退出时被自动删除。
下面是示例代码:
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)
}
config := &types.ContainerCreateConfig{
Image: "nginx:latest",
HostConfig: &types.HostConfig{
AutoRemove: false,
},
}
resp, err := cli.ContainerCreate(context.Background(), config, nil, nil, "")
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)
// 等待容器退出
statusCh, errCh := cli.ContainerWait(context.Background(), resp.ID, "")
select {
case err := <-errCh:
if err != nil {
panic(err)
}
case <-statusCh:
}
fmt.Println("Container stopped:", resp.ID)
}
在上述示例中,我们创建了一个nginx容器,并设置了AutoRemove字段为false,然后启动容器。通过ContainerWait方法可以等待容器退出,这样可以保证容器在后台持续运行。
原文地址: https://www.cveoy.top/t/topic/h475 著作权归作者所有。请勿转载和采集!