如何在系统重启时自动启动Docker容器?


46

由于我在docker容器中托管了一个WordPress网站,并且我希望这些容器始终在引导时启动,因此需要手动完成。


您使用哪个ubuntu版本?
Maythux

使用ubuntu服务器14.04
nayan tiwari,2015年

这已在ServerFault上被询问。
Dan Dascalescu '16

交叉张贴。请选择一个(不是很多)网站来发布内容。
托马斯·沃德

Answers:


34

到现在为止,我认为没有办法正常地做到这一点。一个棘手的解决方案是使用重新启动策略

sudo docker run --restart=always -d your_image

这意味着每当您关闭它时,它将退出您的容器,以便在您启动主机时导致重启docker。


当我搜索它时,有一些自动化工具,例如Chef,但不知道如何使用它们
nayan tiwari,2015年


2
为什么不为此使用系统可能性?新贵和systemd都可以完美地解决这一问题
Reishin

29

在现有容器上添加重新启动策略是一种非常常见的用例。

可以使用以下命令完成此操作: docker update --restart {no,on-failure,unless-stopped,always} container_name

更多详细信息:Docker-自动启动容器


2
这完美地解决了我的问题!我的数据库中有一个容器,希望它在Mac启动时启动。通过指定其映像始终重新启动(除非停止),就可以达到目的!
科林

21

由于ubuntu 15现在支持systemd,因此该管理器的示例:

someservicename.service

[Unit]
Description=Some service
Requires=docker.service
After=docker.service

[Service]
Restart=always
ExecStart=/usr/bin/docker start -a container_name
ExecStop=/usr/bin/docker stop -t 2 container_name

[Install]
WantedBy=multi-user.target

Docker网站上有更多可用信息

PS很可爱的配置:)


4

我所做的是使用Upstart文件。

您可以在Docker网站上找到一些示例和其他解决方案。

在/ etc / init中创建一个类似的文件:

Description "My container"
start on filesystem and started docker
stop on runlevel [!2345]
respawn
script
   /usr/bin/docker start -a mycontainer
end script
pre-stop script
  /usr/bin/docker stop mycontainer
end script

请注意,从Docker 1.2开始,有重启策略,这些策略也可能有助于在运行docker服务时自动重启容器(例如,启动后)。

个性而言,我使用use来配置我的工作站,并使用此Docker模块自动创建更完整的启动脚本(启动,停止,重启,清除选项...)


1
新贵已经死了。使用systemd。
AmirHossein
By using our site, you acknowledge that you have read and understand our Cookie Policy and Privacy Policy.
Licensed under cc by-sa 3.0 with attribution required.