在没有 docker 的时候,我们自启服务通常是 systemctl enable 服务名 但 docker 镜像里面不能用 systemctl 这个命令。 那么运行在 docker 中的服务怎么自启呢?是使用 /etc/rc.d/rc.local 吗?
但这样也有问题,有些服务必须要使用 systemctl 。特别是通过源安装的应用,比如 mysql 这类服务。
求大佬解答疑惑?
1
CallMeReznov 2020-12-17 14:40:21 +08:00
restart=always
|
2
ss098 2020-12-17 14:40:54 +08:00
--restart always
|
3
6IbA2bj5ip3tK49j 2020-12-17 14:42:56 +08:00 1
如果你是要自启动容器,那就是让 docker 自启动,按照楼上的做法,把容器实例设置为 restart always 。
如果你是要启动容器的时候,让容器内部的某个服务自启动,那你应该是在以错误的方式使用容器。 |
4
boris93 2020-12-17 14:49:56 +08:00 via Android
如果你使用的是 MySQL 官方镜像,那么在容器角度来看,MySQL 是容器启动后一直在运行的,不需要用 systemctl
如果你是把应用和数据库等等一堆东西放在一个镜像里,那这就是你的姿势不对了 |
5
yyfearth 2020-12-17 16:06:08 +08:00 2
你把运行 docker 镜像当作一个单进程就好
就算是多进程的服务 也应该只跑单个服务 如果你把 docker 当作虚拟机 跑主进程后面一堆后台服务 比如一个容器内跑全套 nginx + web + db 这就是用法不对了 应该每个服务作为一个容器然后互相连起来用 |