为什么在docker容器中运行应用程序不能添加&

如果在容器中使用 & 后台运行一个脚本,并且没有其他操作来阻止容器的退出,那么容器可能会在脚本执行完毕后立即退出。
当容器中的主进程退出时,容器也会随之退出。后台运行的脚本不会阻止容器的退出,因此当脚本执行完毕后,容器中的主进程就会退出,导致容器的终止。
为了保持容器的运行,你可以考虑以下几点:
1. 在容器中运行一个无限循环的命令:可以在脚本末尾添加一个无限循环的命令,以阻止容器的主进程退出。例如:
2. 使用容器编排工具:如果你使用容器编排工具(如 Docker Compose、Kubernetes 等),可以通过配置来保持容器的运行。例如,在 Docker Compose 中,可以设置 restart: always 来自动重新启动容器,即使主进程退出也会重新启动容器。
bashCopy code
#!/bin/bash

# 脚本内容
# ...

# 无限循环命令,阻止容器退出
while true; do sleep 10; done
这样,即使脚本执行完毕,容器中的主进程仍会继续执行无限循环命令,保持容器的运行。
yamlCopy code
version: '3'
services:
my-service:
image: my-image
command: /path/to/script.sh
restart: always
这样,当容器中的主进程退出时,容器编排工具会自动重新启动容器。
确保根据你的具体需求和使用场景,选择适合的方法来保持容器的运行,并处理脚本执行完毕后容器退出的情况。

猜你喜欢

转载自blog.csdn.net/FENGQIYUNRAN/article/details/130845032
今日推荐