docker如何在登录时编写启动容器(ubuntu/systemd)
我在2个docker-compose.yml文件中引用的多个容器中运行多个服务docker如何在登录时编写启动容器(ubuntu/systemd),ubuntu,docker,docker-compose,systemd,Ubuntu,Docker,Docker Compose,Systemd,我在2个docker-compose.yml文件中引用的多个容器中运行多个服务 /srv/ | +-- docker-openvpn-data/ | | | +-- docker-compose.yml | +-- docker-svenv.nl-data/ | +-- docker-compose.yml 这些docker-compose.yml文件在部署时启动(docker-compose up) 当我的主机重新启动(无人值守升级)时,我的机器不会再次启动容器,当我
/srv/
|
+-- docker-openvpn-data/
| |
| +-- docker-compose.yml
|
+-- docker-svenv.nl-data/
|
+-- docker-compose.yml
这些docker-compose.yml文件在部署时启动(docker-compose up
)
当我的主机重新启动(无人值守升级)时,我的机器不会再次启动容器,当我通过ssh手动启动容器时,所有容器都会立即启动
我的主机运行的是使用systemd的Ubuntu 16.04
- 什么配置负责从SSH登录开始的容器
- 我可以将此配置更改为在启动时启动吗
restart:always
,它们将在启动时启动(docker守护进程启动时)。(见本页第一节:)
当然,这确实需要运行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.
不确定这是否有帮助,但请将以下内容放入docker-compose.yml文件中: 所发生的是,当您的compose文件中有这个文件时,它会在引导时启动docker容器。不确定这是否与您的问题相关,因为它不是systemd设置,而是docker设置
希望它能帮助您解决问题。如果它真的像这样工作,那就是非标准的。询问你的主机提供商。我相信有可能把用户级的systemd东西放在适当的位置。您在
~/.config/systemd/
中有任何内容吗?没有,我在/etc/systemd/system/docker.d/docker.conf中有一个覆盖,但我在没有它的情况下测试了引导,这没有什么区别…在stackoverflow或unix.stackexchange中提问。这个论坛主要面向开发者,而不是运营商。刚刚再次测试,容器/dockerd在登录之前不会启动。我怀疑是某种systemd文件在这样做?听起来systemd docker服务是在您的用户下运行的,而不是在系统范围内运行的。默认情况下,这意味着该服务仅在您登录后运行。根据操作系统的不同,您可以使用类似于loginctl enable linger username
的方法来确保systemd进程在引导后立即启动。显然,如果您的系统不使用loginctl,这将不起作用,但其他登录服务可能也有相同的选项。感谢您提供的信息,我可以调试并确定用户名吗?systemd和dockerd进程以root用户身份运行,我也以root用户身份登录(是的,我知道,不过是私钥)。我尝试了loginctl enable linger root
,但运气不好……那一定是其他原因,我不确定如何帮助你。也许你可以问一下服务器故障?这似乎与docker无关。请记住链接是不稳定的,写下答案,这样如果将来链接消失,你的答案仍然有用。