我在2个docker-compose.yml文件中引用的多个容器中运行多个服务。
/srv/
|
+-- docker-openvpn-data/
| |
| +-- docker-compose.yml
|
+-- docker-svenv.nl-data/
|
+-- docker-compose.yml
这些docker-compose.yml文件在部署时启动(docker-compose up
)。
当我的主机重新启动(无人值守升级)时,我的机器无法再次启动容器,当我手动启动它们时,所有容器都会立即启动。
我的主机运行使用systemd的Ubuntu 16.04。
答案 0 :(得分:0)
当守护程序启动时,docker守护程序将遵循重新启动策略的设置,因此如果在docker-compose.yml中将容器设置为restart: always
,它们将在启动时启动(当docker守护程序启动时)。 (参见本页第一部分:https://docs.docker.com/engine/admin/host_integration/)
当然这需要docker守护进程运行,看起来只有在你登录时才会启动。这可能意味着docker守护程序服务已设置为在您自己的用户会话中启动。您可以使用逗号来使Ubuntu在引导时生成用户会话,从而导致用户特定的systemd服务(如Docker)启动。
此命令为loginctl enable-linger username
。
从手册页:
enable-linger [USER...], disable-linger [USER...]
Enable/disable user lingering for one or more users.
If enabled for a specific user, a user manager is spawned
for the user at boot and kept around after logouts.
This allows users who are not logged in to run long-running
services. Takes one or more user names or numeric UIDs
as argument. If no argument is specified, enables/disables
lingering for the user of the session of the caller.
http://manpages.ubuntu.com/manpages/zesty/en/man1/loginctl.1.html
答案 1 :(得分:0)
不确定这是否有帮助,但将以下内容放入docker-compose.yml文件中:
https://docs.docker.com/compose/compose-file/#restart
当你在compose文件中有这个时,它会在启动时启动docker容器。不确定这是否与您的问题有关,因为它不是系统设置而是码头设置。
希望它有所帮助,如果确实如此,它可以解决你的问题。