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

  1. linux重启docker镜像没了,解决docker run 或者 docker restart 启动镜像就自动退出

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

  2. docker run和docker start的区别

    docker run: docker run :创建一个新的容器并运行一个命令,是将镜像放入容器并启动容器. docker run一般需要跟几个参数,如下所示: docker run -it --na ...

  3. docker run 与 docker start区别

    说明, docker run 和docker start 都是运行一个docker容器, 区别在于 1. docker run (使用镜像image) docker run是创建一个新容器,并运行 ( ...

  4. docker run与docker start的区别?

    docker run相当于执行了两步操作:将镜像放入容器中(docker create),然后将容器启动,使之变成运行时容器(docker start). docker start的作用是:重新启动已 ...

  5. “docker run”VS“docker exec”,这两个命令有区别吗?

    出品丨Docker公司(ID:docker-cn) 编译丨小东 每周一.三.五晚6点10分 与您不见不散! "docker run"和"docker exec" ...

  6. docker run 与docker start的区别

    引用:http://www.wangminli.com/?p=1184 docker run 只在第一次运行时使用,将镜像放到容器中,以后再次启动这个容器时,只需要使用命令docker start 即 ...

  7. dism 分割镜像_DISM修改WDS启动镜像实现自动捕获镜像

    前些日子在做windows OS自动部署的各种测试,用的是微软免费的WDS功能,因为是测试,在抓捕模板的时候,参数基本不变,为了避免每次捕获模板都需要手动敲入参数,这里我用自动应答文件提前将参数写入W ...

  8. Docker 入门系列(3)- Docker 容器(创建、启动、终止、进入、删除、导入、导出容器、容器和镜像转化)

    Docker 容器 简单来说,容器是镜像的一个运行实例.所不同的是,镜像是静态的只读文件,而容器带有运行时需要的可写文件层. 如果认为虚拟机是模拟运行的一整套操作系统(包括内核.应用运行态环境和其他系 ...

  9. Linux镜像run起来,六、Docker run 运行镜像

    Docker 镜像只有运行起来,才会创建一个容器,才能提供对外服务 这里我们先不解释什么是镜像,我们只解释它们之间的关系和类比 我们先说镜像,镜像有点类似于已经打包好了,放在腾讯服务器上的,但还没有装 ...

最新文章

  1. Python 之 matplotlib (三)坐标轴
  2. 用原始方法解析复杂字符串,json一定要用JsonMapper么?
  3. python基础网易_十年Python大牛花了三天总结出来的python基础知识实例,超详细!...
  4. Universal Windows Platform(UWP)应用的窗口特性
  5. Midway Serverless 2.0,一体化让前端研发再次提效
  6. 人口预测和阻尼-增长模型_使用分类模型预测利率-第3部分
  7. linux 算法函数,数据结构——算法之(012)( linux C 全部字符串操作函数实现)...
  8. ipv6地址格式_IPV6与IPV4的差异
  9. IDEA Maven项目添加本地jar包
  10. 使用单例模式实现自己的HttpClient工具类
  11. caffe 训练solver配置
  12. EXCEL实战技巧与数据分析(一)基础应用
  13. 【数据结构与算法分析】——java语言描述(1)
  14. QC3.0手机充电器直接输出12V电压,自制诱骗线
  15. ddos应急处理_DDoS攻击应急体系知多少?
  16. vue怎么制作甘特图——dhtmlx-gantt
  17. 项目管理与SSM框架——Spring
  18. 小米手机定价与《怪诞行为学》
  19. C++关于引用的分析
  20. 电脑开机正常,但显示器没反应怎么办

热门文章

  1. 2022-2028年中国在线旅行预订市场投资分析及前景预测报告
  2. 2022-2028年中国水处理分离膜行业市场现状调研及市场需求潜力报告
  3. Git 常用操作(3)- 本地分之显示、创建、切换、合并和删除操作
  4. 【Sql Server】DateBase-简单的Select查询
  5. Python 读取文本时的 read/readline/readlines
  6. Python机器学习——Agglomerative层次聚类
  7. vue element的若干问题
  8. 利用UltraScale和UltraScale+FPGA和MPSOC加速DSP设计生产力
  9. 语义分割车道线,来自两篇论文的融合算法
  10. 生成对抗网络(GAN)