执行命令: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 启动镜像就自动退出相关推荐

  1. Mac重启和关机没反应解决办法

    使用途中XMIND无法打开文件,并显示我的文件对电脑有害,建议移到废纸篓,内心OS:移到废纸篓还可以恢复回来,索性删了,继续打开xmind文件,仍然打不开,去废纸篓里想恢复文件,但右键之后不显示[放回 ...

  2. docker run 或者 docker restart 启动镜像就自动退出

    执行命令:docker run --name centos8 -d centos /bin/bash,通过docker ps查看正在运行中容器,找不到centos8.通过docker ps -a查看发 ...

  3. linux账号密码输入后闪退,修复ssh无法连接(ssh输入完密码自动退出)

    故障现象,通过telnet连接服务器22端口是通的,通过ssh软件连接,到密码输入完以后自动退出. 机房检查过配置文件,跟配置文件无关(root允许登录的),selinux也是关闭,iptables也 ...

  4. [视频改]Docker技术从0到1全覆盖 docker入门向 文字版

    原视频:https://www.bilibili.com/video/BV16q4y1A74h 作者:智慧少年Xenny 简介:这是一个关于docker使用的教学. 包含 docker基础使用 doc ...

  5. linux启动停留在grub界面,启动linux停留在grub提示符的解决方法.doc

    启动linux停留在grub提示符的解决方法 想让系统直接启动到Windows,不出现Linux的Grub(或LILO)引导界面(Solution 1-3),或者是在Windows中删除了Linux分 ...

  6. oracle12数据库重启命令,linux重启oracle数据库命令

    Linux中可以通过相关命令重启oracle数据库,下面由学习啦小编为大家整理了linux重启oracle数据库命令和方法的相关知识,希望对大家有帮助! linux重启oracle数据库命令和方法1 ...

  7. linux重启docker镜像都没了,linux – 没有响应的Docker命令挂起

    Docker守护程序运行正常,但是当我执行docker镜像,docker ps等时,docker只是无限期挂起而没有输出.这种情况昨晚没有发生,这让我疯狂. 我在我的AWS Linux AMI上重新安 ...

  8. Linux安装Docker容器环境centos中安装docker-compose容器编排dockerfile文件构建镜像(史上最详细的docker)

    在Linux系统下安装docker容器环境 1.容器介绍 1.1 镜像(Image) 镜像可以用来创建Docker 容器,Docker 提供了一个很简单的机制来创建镜像或者更新现有的镜像, 用户甚至可 ...

  9. linux 缩小链接库体积,两个奇技淫巧,将 Docker 镜像体积减小 99%

    原标题:两个奇技淫巧,将 Docker 镜像体积减小 99% 前言 对于刚接触容器的人来说,他们很容易被自己构建的 Docker 镜像体积吓到,我只需要一个几 MB 的可执行文件而已,为何镜像的体积会 ...

最新文章

  1. python结果输出到文件-python print输出到文件
  2. 【深度学习】使用Python+PyTorch预测野外火灾
  3. 38 ubuntu/windows双系统安装
  4. 当模板方法遇到了委托函数,你的代码又可以精简了
  5. oracle 10g r2 for solaris x86,Oracle10g for Solaris9(x86)安装指南
  6. 采购模板html5,蓝色的采购信息管理系统手机界面wap模板
  7. Cisco服务器怎么安装系统,CISCO服务器Linux系统安装步骤
  8. NSString Unicode
  9. STM32单片机OLED俄罗斯方块单片机小游戏
  10. FPS类游戏的逆向分析通用方法与C++逆向功能开发详解
  11. 如何利用电脑将文件刻录到光盘里面
  12. Tcp/Udp端口对照表
  13. 雪球 feed流爬虫
  14. Windows 10的最新版本是什么?
  15. 【PATB1041】考试座位号(题解+拓展)
  16. 虚拟机 报错:Unmount and run xfs_repair
  17. Locating Elements(二)
  18. 慢性疲劳免疫失调综合症(CFIDS)
  19. HDFS原理 | 一文读懂HDFS架构与设计
  20. python生成格雷码

热门文章

  1. CAN通信中终端电阻的作用
  2. STM32F429移植LVGL
  3. MIT 6.828 学习笔记4 Lab2实验报告
  4. Python图像处理库PIL的ImageColor模块介绍
  5. 【原创】Themida 2260 虚拟机 FISH 初探(一)
  6. 3款国外比较好用的APK download下载网站推荐
  7. python学习笔记之doc和docx的格式转换
  8. Linux安装NFS
  9. 【愚公系列】2022年09月 微信小程序-WebGL画渐变色正方形
  10. 解密区块链中的密码学