首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >记录一次docker启动容器后Exited(127)的解决过程[通俗易懂]

记录一次docker启动容器后Exited(127)的解决过程[通俗易懂]

作者头像
全栈程序员站长
发布2022-07-30 10:00:42
发布2022-07-30 10:00:42
5.8K0
举报

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

特意强调一下: 本人使用的系统为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,也许你的问题跟我不一样,请尝试寻找其他办法。

**

发布者:全栈程序员栈长,转载请注明出处:https://javaforall.cn/129335.html原文链接:https://javaforall.cn

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2022年4月1,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 小结
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档