繁体   English   中英

docker-compose如何在登录时启动容器(ubuntu / systemd)

[英]How does docker-compose start container on login (ubuntu/systemd)

我在2个docker-compose.yml文件中引用的多个容器中运行多个服务。

/srv/
|
+-- docker-openvpn-data/
|   |
|   +-- docker-compose.yml
|
+-- docker-svenv.nl-data/
    |
    +-- docker-compose.yml

这些docker-compose.yml文件在部署时启动(docker docker-compose up )。

当我的主机重新启动(无人值守的升级)时,我的机器不会再次启动容器, 当我手动启动它们时,所有容器立即启动。

我的主机运行使用systemd的Ubuntu 16.04。

  • 什么配置负责从SSH登录开始的容器?
  • 我可以改变此配置以在启动时启动吗?

当守护程序启动时,docker守护程序将遵循重新启动策略的设置,因此如果将容器设置为restart: always在docker-compose.yml中,它们将在启动时启动(当docker守护程序启动时)。 (参见本页第一部分: https//docs.docker.com/engine/admin/host_integration/

当然这需要docker守护进程运行,看起来只有在你登录时才会启动。 这可能意味着docker守护程序服务已设置为在您自己的用户会话中启动。 您可以使用linger来使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

不确定这是否有帮助,但将以下内容放入docker-compose.yml文件中:

https://docs.docker.com/compose/compose-file/#restart

当你在compose文件中有这个时,它会在启动时启动docker容器。 不确定这是否与您的问题有关,因为它不是系统设置而是docker设置。

希望它有所帮助,它可以解决你的问题。

暂无
暂无

声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM