linux重启docker镜像没了,解决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 启动镜像就自动退出就是小编分享给大家的全部内容了,希望能给大家一个参考,也希望大家多多支持云海天教程。
原文链接:https://blog.csdn.net/chenwen202/article/details/108117916
linux重启docker镜像没了,解决docker run 或者 docker restart 启动镜像就自动退出相关推荐
- Mac重启和关机没反应解决办法
使用途中XMIND无法打开文件,并显示我的文件对电脑有害,建议移到废纸篓,内心OS:移到废纸篓还可以恢复回来,索性删了,继续打开xmind文件,仍然打不开,去废纸篓里想恢复文件,但右键之后不显示[放回 ...
- docker run 或者 docker restart 启动镜像就自动退出
执行命令:docker run --name centos8 -d centos /bin/bash,通过docker ps查看正在运行中容器,找不到centos8.通过docker ps -a查看发 ...
- linux账号密码输入后闪退,修复ssh无法连接(ssh输入完密码自动退出)
故障现象,通过telnet连接服务器22端口是通的,通过ssh软件连接,到密码输入完以后自动退出. 机房检查过配置文件,跟配置文件无关(root允许登录的),selinux也是关闭,iptables也 ...
- [视频改]Docker技术从0到1全覆盖 docker入门向 文字版
原视频:https://www.bilibili.com/video/BV16q4y1A74h 作者:智慧少年Xenny 简介:这是一个关于docker使用的教学. 包含 docker基础使用 doc ...
- linux启动停留在grub界面,启动linux停留在grub提示符的解决方法.doc
启动linux停留在grub提示符的解决方法 想让系统直接启动到Windows,不出现Linux的Grub(或LILO)引导界面(Solution 1-3),或者是在Windows中删除了Linux分 ...
- oracle12数据库重启命令,linux重启oracle数据库命令
Linux中可以通过相关命令重启oracle数据库,下面由学习啦小编为大家整理了linux重启oracle数据库命令和方法的相关知识,希望对大家有帮助! linux重启oracle数据库命令和方法1 ...
- linux重启docker镜像都没了,linux – 没有响应的Docker命令挂起
Docker守护程序运行正常,但是当我执行docker镜像,docker ps等时,docker只是无限期挂起而没有输出.这种情况昨晚没有发生,这让我疯狂. 我在我的AWS Linux AMI上重新安 ...
- Linux安装Docker容器环境centos中安装docker-compose容器编排dockerfile文件构建镜像(史上最详细的docker)
在Linux系统下安装docker容器环境 1.容器介绍 1.1 镜像(Image) 镜像可以用来创建Docker 容器,Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像, 用户甚至可 ...
- linux 缩小链接库体积,两个奇技淫巧,将 Docker 镜像体积减小 99%
原标题:两个奇技淫巧,将 Docker 镜像体积减小 99% 前言 对于刚接触容器的人来说,他们很容易被自己构建的 Docker 镜像体积吓到,我只需要一个几 MB 的可执行文件而已,为何镜像的体积会 ...
最新文章
- python结果输出到文件-python print输出到文件
- 【深度学习】使用Python+PyTorch预测野外火灾
- 38 ubuntu/windows双系统安装
- 当模板方法遇到了委托函数,你的代码又可以精简了
- oracle 10g r2 for solaris x86,Oracle10g for Solaris9(x86)安装指南
- 采购模板html5,蓝色的采购信息管理系统手机界面wap模板
- Cisco服务器怎么安装系统,CISCO服务器Linux系统安装步骤
- NSString Unicode
- STM32单片机OLED俄罗斯方块单片机小游戏
- FPS类游戏的逆向分析通用方法与C++逆向功能开发详解
- 如何利用电脑将文件刻录到光盘里面
- Tcp/Udp端口对照表
- 雪球 feed流爬虫
- Windows 10的最新版本是什么?
- 【PATB1041】考试座位号(题解+拓展)
- 虚拟机 报错:Unmount and run xfs_repair
- Locating Elements(二)
- 慢性疲劳免疫失调综合症(CFIDS)
- HDFS原理 | 一文读懂HDFS架构与设计
- python生成格雷码