详细介绍了docker运行或docker重启启动镜像系统时如何处理全自动退出的问题,具有非常好的实用价值,希望对大家有所帮助。跟我回去看看。
执行命令:DockerRun-nameCentOS8-dCentOS/bin/bash。根据dockerps,查询已经在运行的容器,但是找不到CentOS8。
根据dockerps-a查询,centos8容器已经被终止。
[root@MiWiFi-R4A-srvserver]$dockerrun--namecentos8-dcentos/bin/bash a770630ca865b3c3346a321a383f302ed22af9281be8482f4f4debc59218d0d1 [root@MiWiFi-R4A-srvserver]$dockerps CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES [root@MiWiFi-R4A-srvserver]$dockerps-a CONTAINERIDIMAGECOMMANDCREATEDSTATUSPORTSNAMES a770630ca865centos"/bin/bash"37secondsagoExited(0)35secondsagocentos8你为什么退出?
这是因为docker是在后台运行的,所以前台肯定有一个接收过程。如果docker运行的命令不是为了这些离线命令(例如top、ping),它们会自动撤销。在上面的代码中,-dcentos是一个必须执行的特定命令。如果命令执行完成或应用程序完成,容器将自动终止。
溶液
作为前台进程运行
作为前台进程运行程序流。如果容器必须启动其他几个进程,它只需要在其中一个进程中进行前台接收。
例如,上面提到的centos容器,只有启动命令必须更改为交互式技术启动:
dockerrun-namecentos8-itcentos/bin/bash
或者Web容器:
服务php5-fpm启动和启动。&nginx-g"守护进程关闭;"
机会主义方法
增加一个类似tailtop的程序流,可以在前台运行,连续输出日志文件。
服务nginx启动和启动。&服务php5-fpm启动和启动。&tail-f/var/log/nginx/error.log
以上面提到的web容器为例,可以这样写:
服务nginx启动和启动。&服务php5-fpm启动和启动。&tail-f/var/log/nginx/error.log
编写自己的脚本
在启动centos/ubuntu容器的时候,可以做到一手一脚:做一个无限循环,不断输出自己想要的东西,这样容器就不容易觉得自己无事可做而自杀。
dockerrun-dcentos/bin/bash-c"而true做echohelloworld睡眠1;完成”
填写专长:在Docker中,CMD启用的sh脚本中的if命令报告意外标志if[[s解决方案
最近根据Dockerfile写了镜像系统,在CMD中启用了sh脚本(start.sh)来启动容器。根据Dockerlun启动时的docker日志容器ID,发现错误为:意外标记if[[
我马上在外部的linux系统进程中实现了start.sh,成功了。根据dockerexec对容器的录入,在容器中启用start.sh没有错误,命令中必须启动的所有程序进程都成功启动。立即制作脚本没有错,但是按照dockerrun的说法,这是错误的,也是混乱的。
start.sh中的错误代码段如下
if[[-e/home/dc/testnn-aaa.zip]];then rm-rf/home/testnn-aaa unzip-q-o-d/hometestnn-aaa.zip echo"unzipzipfinished" else echo"dczipnotexist" fi经过对比,因为我的start.sh在错句前也有一个if语句,但是没有错,所以发现了很多不同之处:第一个if应用是single[],代码改成[],成功了。进行了以下更改:
if[-e/home/DC/testnn-AAA.zip];然后
本文涉及docker运行或docker重启启动镜像系统并自动退出,这就是我分享给大家的全部。期待给你一个参考,也期待你的申请。
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)