问题描述: centos 启动一个容器添加了-d 参数,但是docker ps 或者docker ps -a查看却已经退出了
shell>docker run -d centos
a44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547
shell>docker ps
【java|docker启动容器之后马上又自动关闭解决办法】
文章图片
退出原因 1、docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出
2、容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出
3、这个是 docker 的机制问题
解决方案 方案1:
网上有很多介绍,就是起一个死循环进程,让他不停的循环下去,前台永远有进程执行,那么容器就不会退出了,以centos为例
shell>docker run -d centos /bin/sh -c "while true;
do echo hello world;
sleep 1;
done"
缺点: 命令太冗长了,还占用一个终端
方案2:
shell>docker run -dit centos /bin/bash
添加-it 参数交互运行
添加-d 参数后台运行
这样就能启动一个一直停留在后台运行的Centos了。
shell>docker ps 容器运行起来了
文章图片
进入容器的方法: 使用exec,不要使用attach命令
attach命令就是使用现有终端,如果你要退出容器操作,那么bash结束,容器也就退出了
shell>docker exec -it /bin/bash //新建一个bash
文章图片
推荐阅读
- java|查看MySQL初始密码并修改
- java|kali linux 初始密码
- Spring的Factories机制介绍
- java|谷粒商城-02-p20-p27
- 中间件|基于SpringBoot+MyBatis+Vue的音乐网站
- java|推荐一个 Spring Boot + MyBatis + Vue 音乐网站
- 音乐平台开发记录|基于springboot+vue(thymeleaf)+mysql下的自创音乐网站平台--CrushMusic(开发日志十)
- java|基于 SpringBoot + Vue 的前后端分离的考试系统
- Java|【面试资料】 Java中高级核心面试知识解析