簡體   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