【问题标题】:docker systemd: how i can automatically start a container while setting up a service in systemd (BASH)docker systemd:如何在 systemd (BASH) 中设置服务时自动启动容器
【发布时间】:2020-10-26 10:49:49
【问题描述】:
我将使用命令运行一个 docker 容器
docker run -ti --rm -p 8080:80 -v $(pwd)/my/path/to/config myimage:latest
但计划是在脚本中编写一个函数,启动这些映像,同时在 systemd 中启动 VM。
我必须在 /lib/systemd/system 中设置服务吗?
【问题讨论】:
标签:
bash
docker
scripting
containers
systemd
【解决方案1】:
来自 docker 网站的文档,
https://docs.docker.com/config/containers/start-containers-automatically/
可以使用重启策略,参数是,
使用重启策略
要为容器配置重启策略,请在使用 docker run 命令时使用 --restart 标志。 --restart 标志的值可以是以下任何一种:
Flag
说明
no
不要自动重启容器。 (默认)
on-failure
如果容器因错误退出,则重新启动容器,这表现为非零退出代码。
always
如果容器停止,请始终重新启动容器。如果是手动停止的,只有在 Docker daemon 重启或者容器本身手动重启时才会重启。 (请参阅重启策略详细信息中列出的第二个项目符号)
unless-stopped
与always类似,除了当容器停止(手动或其他方式)时,即使在Docker daemon重新启动后也不会重新启动。
如果这些不能满足您的要求,那么您可以使用网页下方的流程管理器,例如 upstart、systemd 或 supervisor。
【解决方案2】:
在你的Dockerfile,最后添加
ENTRYPOINT service ssh restart && bash