在Ubuntu 14.04上是否存在一种更好的方法?
我在自动启动网络应用的过去。但这对于Docker来说并不适合。
#1 楼
显然,当前(从Docker 1.2开始)自动启动Docker容器的方法是使用重新启动策略。这将控制Docker在启动时应如何处理容器以及在退出时应如何重新启动容器。到目前为止,我已经使用了“ always”选项,并且可以确认它使Docker在系统启动时自动启动了容器:sudo docker run --restart=always -d myimage
文档摘录>
重启策略使用Docker运行时的--restart标志,您可以
指定重启策略,该重启策略用于在退出时重启或不重启容器。
>
否-退出容器时不要重新启动容器。
失败时-仅当容器退出且状态为非零时才重新启动容器。
always-始终退出容器,无论退出状态如何。
您还可以指定Docker使用on-failure尝试尝试重新启动容器的最大次数。政策。默认值为
,Docker将永远尝试重新启动容器。因此,如果容器
退出,则Docker将重新启动它。失败,最大重启次数为10。如果redis容器连续以非零退出状态退出
超过10次,则Docker将中止尝试重启容器的操作。提供最大重启限制仅对
失败策略有效。
#2 楼
Docker的页面说明了如何使用upstart和systemd进行操作。我同意,对于Docker来说似乎不合适。他们的解决方案是运行docker start
,假设您已经创建了容器。我认为您可以在upstart脚本中执行docker run --rm
(像从映像中处理全新进程和容器一样进行处理),或者只是让docker daemon在启动时重新启动容器本身(默认情况下,如果您不执行任何操作其他)。 Upstart的优点是可以轻松地启动/停止进程,但是您也可以通过docker的启动/停止来实现这一点!端口/卷绑定)在upstart脚本生效之前。评论
链接已损坏...这似乎是可能的替换,但它肯定不会显示“如何”
– Gert van den Berg
19年4月16日在7:41
谢谢,我已经将链接固定到相似的页面,但是不能确定它表示的内容与原始内容相同。
–劳伦斯·凯斯特洛(Lawrence Kesteloot)
19年4月16日在14:18
#3 楼
但这对Docker来说并不正确。 br />
使用您知道的东西,使用有效的东西,使用可以轻松维护和理解的东西。
评论
感谢@EEAA ..这是否意味着您在非守护程序模式下运行它们?这是否还意味着您需要使用--rm运行它们?
– Stefan Arentz
2014年10月2日,14:30
我在前台模式下运行容器,并让supervisor捕获stdout / stderr。我不确定--rm在这里为何有意义。
–EEAA
2014年10月2日14:32
@EEAA:关于您的问题:对于某些人,docker替代了lxc或openvz,后者具有lxc.start.auto = 1且vzctl设置为--onboot是。 ESXi和其他虚拟化解决方案也包含此类功能。像劳伦斯一样,我也不认为这种自动启动功能应该以特定于发行版的方式实现,因为码头用户应该能够在每个平台上以相同的知识来解决相同的问题。
–丹尼尔·奥尔德(Daniel Alder)
16 Dec 15'在10:18
正确,Docker是将主机与正在运行的容器分离的一种好方法,因此使用特定于主机的配置会有些倒退。
– nijave
17年11月18日在18:59
评论
“总是-无论退出状态如何,始终重新启动容器”有点令人困惑。如果您手动退出/停止容器,它将不会重新启动容器,这是我一直在寻找的行为。
–w00t
15年3月27日在23:55
注意:添加了另一个称为“除非停止”的策略。它的行为与往常一样,但是如果容器停止并且系统重新启动或docker daemon重新启动,则容器不会重新启动。请参阅此处,以很好地写下所有四个选项blog.codeship.com/…
–大卫·莫拉莱斯(David Morales)
16-6-23在22:56
当然,泊坞窗守护程序必须自动启动以支持此功能。
– sherrellbc
17年1月23日在17:03
我认为问题是在“在系统启动时”询问,这意味着在物理或虚拟服务器重新启动后,假设Docker引擎在服务器重新启动后已完全运行,则容器如何自动重新启动?
–根循环
19年8月2日,下午2:22
就是@RootLoop。人们读得不好
–数字人
20年1月29日15:05