Docker文档说:
重启策略仅在容器成功启动后生效。在这种情况下,成功启动意味着容器启动至少10秒并且Docker已开始监视它。这可以防止根本不启动的容器进入重启循环。
由于您显示的Go代码基本上立即退出,因此它永远不会满足此10秒最小规则。
您可以通过使用强制Go等待进程活动至少10秒 time.After 有点像:
ch := time.After(10 * time.Second) defer (func() { fmt.Println("waiting"); <-ch; fmt.Println("waited") })()
也就是说,创建一个将在10秒后接收事件的频道,然后实际接收它(如果发生则立即接收,否则等待) main 回报。从玩 https://play.golang.org/p/zGY5jFWbXyk ,一个技巧是在从频道接收后需要有一些可观察到的效果,否则它实际上不会等待。
main