linux docker run怎么退出,解决docker run 或者 docker restart 启动镜像就自动退出

本文详细阐述了如何避免Docker容器在运行`docker run -d`命令后自动退出的问题,包括使用前台进程、交互式启动、服务联动及脚本控制,提供了实用技巧和解决if语句错误的方法。

摘要生成于 C知道 ,由 DeepSeek-R1 满血版支持, 前往体验 >

本文关键详细介绍了处理docker run 或是 docker restart 启动镜像系统就全自动撤出的难题,具备非常好的实用价值,期待对大伙儿有一定的协助。一起追随我回来瞧瞧吧

实行命令:docker run --name centos8 -d centos /bin/bash,根据docker ps查询已经运行中容器,找不着centos8。

根据docker ps -a查询发觉,centos8容器早已处在终止情况了

[root@MiWiFi-R4A-srv server]$ docker run --name centos8 -d centos /bin/bash

a770630ca865b3c3346a321a383f302ed22af9281be8482f4f4debc59218d0d1

[root@MiWiFi-R4A-srv server]$ docker ps

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

[root@MiWiFi-R4A-srv server]$ docker ps -a

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES

a770630ca865 centos "/bin/bash" 37 seconds ago Exited (0) 35 seconds ago centos8

为何撤出?

这是由于docker后台管理运行,务必有一个前台接待进程。docker运行的命令要不是这些一直脱机的命令(e.g. top,ping),便是会全自动撤出的。而上边的编码中-d centos便是必须实行的特定的命令。命令假如实行结束了或是运用结束时,容器会全自动终止。

解决方案

之前台进程的方式运行

将运行的程序流程之前台进程的方式运行,假如容器必须另外启动好几个进程,那麼也只必须将在其中一个挂具有前台接待就可以。

例如上边常说的 centos 容器,只必须将启动命令改动为交互技术启动:

docker run --name centos8 -it centos /bin/bash

又或是是Web容器:

service php5-fpm start && nginx -g "daemon off;"

投机取巧方法

加上类似 tail top 这类能够前台接待运行的程序流程,不断輸出log文件就可以。

service nginx start && service php5-fpm start && tail -f /var/log/nginx/error.log

再以上边常说的 web 容器为例子,能够写出:

service nginx start && service php5-fpm start && tail -f /var/log/nginx/error.log

自身写脚本

在启动centos/ubuntu容器时,能够做一个手和脚:做一个无限循环,不断輸出随意,那样容器不容易觉得没事儿可做而自尽了。

docker run -d centos /bin/bash -c "while true; do echo hello world; sleep 1; done"

填补专业知识:docker中启动容器时CMD启用的sh脚本中if命令报未预估的标记 if[[的解决方案

近期根据Dockerfile撰写镜像系统,CMD中启用的是sh脚本(start.sh)开展启动容器,根据docker run启动时,启动失败,开展docker logs 容器ID,发觉出错为:未预估的标记 if [[

我立即在外界linux系统进程实行start.sh是取得成功的,根据docker exec 进到容器,在容中启用start.sh也未出错,命令中必须启动的程序流程都取得成功启动。脚本制作立即实行没什么问题,根据docker run却出错,迷惑不解。

start.sh中出错代码段以下

if [[ -e /home/dc/testnn-aaa.zip ]];then

rm -rf /home/testnn-aaa

unzip -q -o -d /home testnn-aaa.zip

echo "unzip zip finished"

else

echo "dc zip not exist"

fi

历经查看较为,由于我的start.sh在出错句子以前也是有if语句,可是没出错,发觉多处差别为第一处if应用的是单[],将编码改成[],则取得成功,改动以下:

if [ -e /home/dc/testnn-aaa.zip ];then

之上这篇处理docker run 或是 docker restart 启动镜像系统就全自动撤出便是我共享给大伙儿的所有内容了,期待能给大伙儿一个参照,也期待大伙儿多多的适用大家。

热搜词

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值