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将保持在前台而不是后台运行。如果supervisor在后台运行,执行supervisor命令后,docker容器也会立即退出。
启动mysql的docker镜像,怎么自动执行初始化sql脚本?
打开SqlCommand line客户端,输入MySQL创建数据库的数据库名称;或者使用MySQL前台和可视化工具创建数据库
docker执行shell脚本 docker执行容器内的shell docker调用宿主机shell命令
版权声明:本文内容由互联网用户自发贡献,本站不承担相关法律责任.如有侵权/违法内容,本站将立刻删除。