docker启动容器后Exited(127)问题及解决方案
特意强调一下
- 本人使用的系统为centos6.8
- 本人运行容器的状态为Exited(127),如果你的问题不是127,可能解决不了你的问题
问题
安装docker之后,拉取镜像docker pull redis
然后docker images查看所有镜像后,
开始命令运行redis
docker run -d --name=myredis -p 6379:6379 -d 7caaqwe22q(镜像id)
然后
docker ps -a
发现:
CONTAINER ID IMAGE COMMAND CREATED STATUS PORTS NAMES b5b887489767 5cbedd5459d4 "docker-entrypoint.s 4 seconds ago Exited (127) 3 seconds ago redis01

在网上找了问题
- 有人说是内存溢出,修改启动的内存分配,试了没作用。
- 有人说是加一些其他的指令如:bin/bash “while true…” …
发现没有解决问题。
于是尝试看了下报错的日志:
docker logs 容器的id
发现有一行报错:
FATAL: kernel too old
网上查到说是:内核太老
分析了一下,这个原因估计是的。
因为 我用的 本地虚拟机的 centos版本比较老,很有可能是这个原因导致的。
于是按照教程,进行内核升级
执行如下命令:
uname -r (查看内核信息) yum -y update nss (更新nss(网络安全服务))
升级内核需要elrepo的yum源,所有安装其源时,先导入elrepo的key:
执行如下:
rpm --import https://www.elrepo.org/RPM-GPG-KEY-elrepo.org rpm -Uvh http://www.elrepo.org/elrepo-release-6-8.el6.elrepo.noarch.rpm
安装elrepo源lt内核
yum --enablerepo=elrepo-kernel -y install kernel-lt
vi /etc/grub.conf 将default=1修改成default=0
wq保存退出。

保存重启
reboot
重启之后,再次查看内核
uname -r
再次查看docker
docker ps -a
然后移除掉旧的
docker rm 容器的id
重新启动容器
docker run -d --name=myredis -p 6379:6379 -d 7caaqwe22q(镜像id)
然后
docker ps -a 查看容器运行状态

至此成功运行redis服务。
总结
1、Exited(127) 后通过docker logs 查看日志报错原因。
2、发现是centos内核太旧于是按照教程升级内核。
3、内核升级后重启虚拟机。
4、启动后通过docker rm 容器id 移除掉旧的有问题的容器。
5、使用docker run … 再次运行。
6、容器成功运行。
注意:我的status是Exited(127),如果你不是127,也许你的问题跟我不一样,请尝试寻找其他办法。
以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。
相关文章
docker如何删除<none>/dangling/悬空镜像
这篇文章主要介绍了docker如何删除<none>/dangling/悬空镜像问题,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教2023-11-11
新版本Docker Desktop自定义安装路径和下载镜像地址路径修改方法
Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的镜像中,这篇文章主要介绍了新版本Docker Desktop自定义安装路径和下载镜像地址路径修改方法的相关资料,需要的朋友可以参考下2025-12-12
Dockerfile如何使用alpine系统制作haproxy镜像
这篇文章主要介绍了Dockerfile如何使用alpine系统制作haproxy镜像问题,具有很好的参考价值,希望对大家有所帮助。如有错误或未考虑完全的地方,望不吝赐教2023-05-05
Docker下Redis集群(主从+哨兵)安装配置的实现步骤
本文主要介绍了Docker下Redis集群(主从+哨兵)安装配置的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧<BR>2022-07-07


最新评论