docker容器run之后马上又自动关闭退出

来源:网络 文章列表 2020-04-04 8
centos 启动一个容器添加了-d 参数,但是docker ps 或者docker ps -a查看却已经退出了。原因:docker容器运行必须有一个前台进程, 如果没有前台进程执行,容器认为空闲,就会自行退出,容器运行的命令如果不是那些一直挂起的命令( 运行top,tail、循环等),就是会自动退出,这个是 docker 的机制问题

问题现象:

centos 启动一个容器添加了-d 参数,但是docker ps 或者docker ps -a查看却已经退出了
shell>docker run -d centos
f99e67911f03b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547

f99e67911f03        centos           "docker-entrypoint.s…"   11 seconds ago      Exited (0) 11 seconds ago

明明加了-d后台运行,怎么还会自动退出呢?

退出原因

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了。

docker ps 容器运行起来了

进入容器的方法:

使用exec,不要使用attach命令
attach命令就是使用现有终端,如果你要退出容器操作,那么bash结束,容器也就退出了
shell>docker exec -it <container_id> /bin/bash

这个操作相当于新建了一个bash

 

 

腾讯云限量秒杀

1核2G 5M 50元/年 2核4G 8M 74元/年 4核8G 5M 818元/年 CDN流量包 100GB 9元

版权声明

本站部分原创文章,部分文章整理自网络。如有转载的文章侵犯了您的版权,请联系站长删除处理。如果您有优质文章,欢迎发稿给我们!联系站长:
愿本站的内容能为您的学习、工作带来绵薄之力。

评论

  • 随机获取
点击刷新
精彩评论

友情链接