docker执行shell脚本 如何避免Docker容器启动脚本运行后自动退出?
如何避免Docker容器启动脚本运行后自动退出?
避免自动退出的解决方案在运行docker容器启动脚本后,docker run指定的命令如果不是已挂起的命令(如运行top和不断回音),将自动退出。-“d”命令将“detach”设置为true。根据官方文件,这意味着让这个命令在后台运行,但它并不是一直运行的(我们在普通的Linux终端上运行/bin/bash,运行后就会完成,而且我们不会一直等待响应,所以我们真的不能以“守护进程”的方式运行/bin/bash)。这个地方的早期和现在的官方文件确实有些不一致。现在是分离。早期的文档说指定-D以守护进程的方式运行容器可能有一些误解。另外,如果需要在容器中运行bash,可以直接运行docker run-I-t containeruname/bin/bash。如果您认为docker attach的参数多于docker attach,则可以设置别名来解决此问题:
如何避免Docker容器启动脚本运行后自动退出?
运行多进程docker容器的方法如下:1。使用shell脚本依次启动kubernetes的每个组件。以下是开始-库伯内特斯.sh2,然后在dockerfile中,开始-库伯内特斯.sh指定默认情况下要为docker容器执行的命令。三。需要注意的一点是开始-库伯内特斯.sh脚本将作为docker容器的1号进程运行,并且必须始终运行。因为docker容器只在进程1运行时保持运行,换句话说,docker容器将在进程1退出后退出。因为kubernetes的每个组件都是作为后台进程执行的,所以在脚本的末尾添加了一个死循环以保持启动-库伯内特斯.sh脚本始终在运行。4主管是一种过程管理工具。此时,需要编写管理器配置文件库伯内特斯.conf: 5. 将kubernetes的每个组件的启动命令设置为command。将autorestart参数设置为true意味着supervisor将负责重新启动意外退出的组件。stdout Logfile和stderr Logfile参数可用于设置命令的标准输出文件和标准错误输出文件。6然后,在dockerfile中,指定supervisor作为docker容器的默认命令:7。此时,supervisor是docker容器中的第一个进程,它还需要继续运行。当nodaemon设置为true时,supervisor将保持在前台而不是后台运行。如果主管在后台运行,docker容器将在执行supervisor命令后立即退出。
~]#docker run-M 512M-memory swap 1g-it-P 58080:8080-restart=always
-name bvrfis-logdata中的卷mytomcat:4.0/root/run.sh
--重新启动特定参数值详细信息:
否-当容器退出时,不要重新启动容器;
失败时-仅当容器以非零状态退出时重新启动容器;
始终-无论退出状态如何重新启动容器;
如果要在打开容器时自动启动docker容器中的应用程序服务。只需在dockerfile中编写服务启动脚本,然后使用dockerfile重建映像:
编写应用程序服务自启动脚本
编写dockerfile
重建映像
打开容器
docker执行shell脚本 ubuntu开机启动脚本 启动docker服务
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。