docker

关注公众号 jb51net

关闭
首页 > 网站技巧 > 服务器 > 云和虚拟化 > docker > docker启动容器后Exited(127)

docker启动容器后Exited(127)问题及解决方案

作者:honeyCloud1988

作者在安装Docker并运行Redis容器时遇到Exited(127)问题,通过查看日志发现是内核版本过旧导致,于是通过elrepo源升级内核,重启后移除旧容器并重新运行,最终成功运行Redis服务

特意强调一下

问题

安装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

在网上找了问题

发现没有解决问题。

于是尝试看了下报错的日志:

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,也许你的问题跟我不一样,请尝试寻找其他办法。

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

您可能感兴趣的文章:
阅读全文