docker 容器自动退出(退出docker容器命令)

问题现象centos启动一个容器添加了-d参数,但是dockerps找不到容器,dockerps-a查看却已经退出了[root@VM_0_6_centos~]#dockerrun-dcentosa44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547[root@VM_0_6_centos~]#dockerps找不到容器信息[root@VM_0_6_centos~]#dockerps-as

大家好,又见面了,我是你们的朋友全栈君。

问题现象

centos 启动一个容器添加了-d 参数,但是docker ps 找不到容器,docker ps -a查看却已经退出了
[root@VM_0_6_centos ~]# docker run -d centos
a44b2b88559b68a2221c9574490a0e708bff49d88ca21f9e59d3eb245c7c0547
[root@VM_0_6_centos ~]# docker ps
找不到容器信息
[root@VM_0_6_centos ~]# docker ps -a
status列显示已退出
[root@VM_0_6_centos ~]# docker logs centos
没有任何异常日志

退出原因

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 <container_id> /bin/bash //新建一个bash

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌侵权/违法违规的内容, 请发送邮件至 举报,一经查实,本站将立刻删除。

发布者:全栈程序员-用户IM,转载请注明出处:https://javaforall.cn/128433.html原文链接:https://javaforall.cn

【正版授权,激活自己账号】: Jetbrains全家桶Ide使用,1年售后保障,每天仅需1毛

【官方授权 正版激活】: 官方授权 正版激活 支持Jetbrains家族下所有IDE 使用个人JB账号...

(0)


相关推荐

  • playbook安装docker

    playbook安装docker

  • docker(7)docker-compose容器集群编排「建议收藏」

    docker(7)docker-compose容器集群编排「建议收藏」前言实际工作中我们部署一个应用,一般不仅仅只有一个容器,可能会涉及到多个,比如用到数据库,中间件MQ,web前端和后端服务,等多个容器。我们如果一个个去启动应用,当项目非常多时,就很难记住了,所有

  • 【云原生】第十二篇–docker容器镜像仓库Harbor部署[通俗易懂]

    【云原生】第十二篇–docker容器镜像仓库Harbor部署[通俗易懂]由于国内访问国外的容器镜像仓库速度比较慢,因此国内企业创建了容器镜像加速器,以方便国内用户使用容器镜像。Harbor是VMware公司开源的企业级DockerRegistry项目,其目标是帮助用户迅速搭建一个企业级的Dockerregistry服务。它以Docker公司开源的registry为基础,提供了管理UI,基于角色的访问控制(RoleBasedAccessControl),AD/LDAP集成、以及审计日志(Auditlogging)等企业用户需求的功能,同时还原生支持中文。…

    2022年10月25日
  • docker端口映射无法外部访问_docker用户映射

    docker端口映射无法外部访问_docker用户映射端口映射容器中可以运行一些应用,要让外部也可以访问这些应用,可以通过-P或-p参数来指定端口映射。当使用大写的-P标记时,Docker会随机映射一个物理机的49000~49900之间的端口到内部容器开放的网络端口。-p则可以指定想要映射的物理机端口,并且,在一个指定端口上只可以绑定一个容器。1.映射指定的本地IP和端口到容器端口dockerrun-it-p192.168.10.10:8000:80busybox2.映射本地指定IP的任意端口到

    2022年10月18日
  • docker卸载命令_删除docker

    docker卸载命令_删除docker删除容器(jenkins官网提供的安装方式,删除比较特殊,因为jenkins自己创建了数据卷,所以要删除数据卷)不然,就算删除了容器,再运行镜像,以前的配置还是删不掉,运行的还是以前的配置首先,关停并删除jenkins容器dockerstop容器iddockerrm容器id然后,查看数据卷(如果是用挂载目录方式安装的jenkins的话,就不需要执行下面的步骤了)dockervolumels发现一个jenkins_home的数据卷,删除数据卷dockervolume

  • docker 离线安装_Docker安装

    docker 离线安装_Docker安装一.上传docker-offline-installer.tar并解压缩(1)tar-xvfdocker-offline-installer.tar如果在网上找不到docker-offline-installer.tar,可以在我的CSDN中点击[资源]去下载二.配置yum源(1)进入工作目录:cd/etc/yum.repos.d/(2)备份现有库源:mkdirrepo&&mv*.reporepo/…

发表回复

您的电子邮箱地址不会被公开。

关注全栈程序员社区公众号