解决docker run后容器出现Exited (0)情况的问题

自己做了个centos7的openresty的Dockerfile,build之后

docker run -d -p 801:80 openresty:1.19 /usr/local/openresty/nginx/sbin/nginx

之后docker ps -a出现如下情况

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9dee2d04b3b5 openresty:1.19 "/usr/local/openrest…" 24 seconds ago Exited (0) 7 seconds ago gifted_bhabha 69846af3baa7 redis:latest "docker-entrypoint.s…" 24 minutes ago Up 24 minutes 0.0.0.0:6379->6379/tcp rds

openresty状态显示为Exited (0)

原因:

Docker的机制是让容器后台运行,必须至少有一个前台进程,容器运行的命令如果不是那些一直挂起的命令(比如运行top,tail),会自动退出

解决:

可以使用包含 -g “daemon off;” 配置项的sh命令以前台方式开启nginx服务

因此启动指令调整如下:

docker run -d -p 801:80 openresty:1.19 /usr/local/openresty/nginx/sbin/nginx -g "daemon off;"

再次docker ps -a看看效果

CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 0291303ca61b openresty:1.19 "/usr/local/openrest…" 29 seconds ago Up 28 seconds strange_curie 69846af3baa7 redis:latest "docker-entrypoint.s…" 26 minutes ago Up 26 minutes 0.0.0.0:6379->6379/tcp rds

补充:docker启动时一直处于exited状态,解决fangfa

docker启动时一直处于exited状态

解决方法

步骤一、docker rm 容器id 将容器删除

步骤二、docker rmi 镜像id 将镜像删除(只有先删除容器,才能删除镜像)

步骤三、docker build -t tomcat:centos . 重新创建容器

步骤四、docker run --privileged -it -d --name tomcat01 -p 1216:8080 tomcat:centos(加权限和)

指定一个伪终端)

错误导致原因1缺少权限 2没有运行终端

注:–privileged 加权限

-t 指定一个伪终端

以上为个人经验,希望能给大家一个参考,也希望大家多多支持我们。如有错误或未考虑完全的地方,望不吝赐教。

(0)

相关推荐

  • docker run 运行容器自动结束的解决

    今天遇到了用Dockerfile创建镜像,镜像运行后容器自动结束问题. 启动命令: docker run -d -p 8080:8080 -v /usr/local/tomcat7.0/logs:/usr/local/tomcat7.0/logs --name tomcatweb tomcat:7.0 运行以后用docker ps 发现docker 容器已经结束了 查找资料后发现 这个问题并不复杂 原因是应为:Docker容器后台运行,就必须有一个前台进程. 解决办法: 1.将运行进程发放入前台

  • 浅谈Docker run 容器处于created状态问题

    在最近遇到的一次问题中,有这样一种现象: 系统有一个测试脚本会不断的执行docker run命令来运行容器,在测试过程中发现有一个情况是,有时候容器没有完全被运行到"Up"状态,而是处于"created"状 态,现象十分奇怪. 上环境首先查看了"created"状态的容器,以及dockerd日志: (1) dockerd的日志中只有"post create"请求,但是居然没有收到该容器的"post start&quo

  • docker run启动的容器挂掉了数据怎么办

    情景描述 在某个系统中,功能性的服务使用 docker stack deploy xxx 启动,某个国产数据库的服务单独使用 docker run xxx 启动,数据库服务没有将存储的位置挂载出来: 结果客户重启了服务器-再登录到服务器重启服务的时候,发现了一个问题,之前数据库里的数据可能会消失(如果再使用 docker run 启动的话). 解决办法 尝试1 起初想的是数据肯定丢了,那就只能重新折腾一次数据了,但工作量太大了- 不过也没办法,下次再启动,把存储挂载到硬盘就好了,Orz 不过和同

  • docker run -v 挂载数据卷异常,容器状态一直是restarting的解决

    出现的问题: docker run 加上 -v 参数之后,容器就一直是 restarting 状态,去掉 -v 参数就可以正常运行 查找问题: 使用 docker logs 'containerId' 这个containerId,就是docker run之后返回的containerId 可以看到,是权限拒绝的问题 解决问题: docker run时加上参数 :加上--privileged=true 例如: docker run -dit -e MYSQL_ROOT_PASSWORD=123456

  • Docker Runc容器生命周期详细介绍

    Docker Runc容器生命周期 容器的生命周期涉及到内部的程序实现和面向用户的命令行界面,runc内部容器状态转换操作.runc命令的参数定义的操作.docker client定义的容器操作是不同的,比如对于docker client的create来说, 语义和runc就完全不同,这一篇文章分析runc的容器生命周期的抽象.内部实现以及状态转换图.理解了runc的容器状态转换再对比理解docker client提供的容器操作命令的语义会更容易些. 容器生命周期相关接口 最基本的require

  • 解决docker run后容器出现Exited (0)情况的问题

    自己做了个centos7的openresty的Dockerfile,build之后 docker run -d -p 801:80 openresty:1.19 /usr/local/openresty/nginx/sbin/nginx 之后docker ps -a出现如下情况 CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES 9dee2d04b3b5 openresty:1.19 "/usr/local/openrest-"

  • docker run之后状态总是Exited

    add -it docker run -it -name test -d nginx:latest /bin/bash -d: 后台运行容器,并返回容器ID: -i: 以交互模式运行容器,通常与 -t 同时使用: -t: 为容器重新分配一个伪输入终端,通常与 -i 同时使用: 补充知识:docker-compose 通过sh命令启动nginx 容器自动退出exited with code 0 docker-compose使用的模板文件中有通过entrypoint或者command参数设置容器启动

  • 解决docker安装后运行hello-world报错的问题

    在centos7.3上yum安装了docker V1.13.1 但是在运行:docker run hello-world的时候报错: # docker run docker.io/hello-world container_linux.go:247: starting container process caused "process_linux.go:258: applying cgroup configuration for process caused \"Cannot set

  • 解决Docker之mysql容器数据库更改不生效的问题

    用官方的mysql 镜像需要修改一些内容,比如配置文件的修改,DB数据文件的目录等,更改之后如果重新运行容器,改过的文件就无效了,新生成的容器不会有之前改变的内容 第一种是修改官方下载的镜像,修改之后 提交一个新的镜像文件 docker commit -m 等新生成的镜像信息, 第二种MYSQL的DB数据,容器关闭后 如果用 docker restart 重启同一容器,那么数据是正常的,如果重新docker run 容器那么数据就不会显示,因为每个容器都有一个文件地址 这就需要把数据文件挂载出来

  • 解决docker run 或者 docker restart 启动镜像就自动退出

    执行命令: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 a770630ca865b3c3346a321a383f302ed22af9281be8482f4f4d

  • 解决docker run时候启动两个占有不同端口的问题

    问题描述: 在执行docker run -p 19918:19918/tcp -v /etc/localtime:/etc/localtime时候后 docker ps查看有启动19918和另一个端口,并在注册中心未发现执行程序. 问题分析: 启动的另一端口为之前配置的,猜测为run时执行了刚刚build的项目外执行了之前的容器. 解决方式: docker images查看容器,删除相同的以及两个执行出的端口容器.再次执行显示成功! 总结: 命名规范,及时清除不必要的容器. 补充知识:docke

  • 解决Docker中的error during connect异常情况

    刚开始接触Docker,遇到异常问题难免会手忙脚乱.没事的,学习就是这样子,在困难中不断地找到解决问题的方法,贵在坚持,加油! 来了来了,问题来了,不要慌,看下面: 我们正常打开了Docker后执行命令后报出error during connect异常. 后面给出了对应异常错误的解释: No connection could be made because the target machine actively refused it.(无法连接,因为目标机器主动拒绝它.)这下子我们知道问题在哪了

  • 解决docker run中使用 ./ 相对路径挂载文件或目录失败的问题

    docker-compose.yml文件中允许使用'./'相对路径 version: '3' ... volumes: - ./init-mongo.js:/docker-entrypoint-initdb.d/init-mongo.js:ro - ./mongo-volume:/data/db ... 会将当前路径下的init-mongo.js文件挂载到容器中的/docker-entrypoint-initdb.d/init-mongo.js,并且设置为只读方式; 会将当前路径下的mongo-

  • docker安装nginx容器的方法

    目录 1.自定义网络相关命令 2.nginx是什么 Nginx+tomcat是目前主流的java web架构 3.安装nginx 4.docker实战之通过nginx镜像来部署SPA项目 5.nginx.conf讲解 1.自定义网络相关命令 1.创建自定义网络       docker network create --driver bridge --subnet 192.168.0.1/16 --gateway 192.168.0.1 mynet       参数说明       --driv

随机推荐