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

**

<think>好的,用户的问题是关于如何重新启动已关闭的Docker容器。首先,我需要回忆Docker的相关命令。根据之前学过的知识,Docker容器的生命周期包括创建、启动、停止和删除等阶段。当容器停止后,可以使用某些命令来重新启动它。 接下来,我需要确定正确的命令。根据引用[2]提到的docker container prune是用来删除所有已停止的容器,但用户的需求是重新启动,而不是删除。所以这个命令不适用。正确的做法应该是先找到已停止的容器,然后重新启动它们。 查找已停止的容器通常使用docker ps -a,这会列出所有容器,包括停止的。然后用户需要获取容器的ID或名称,使用docker start命令来启动。例如,docker start <容器ID>。此外,docker restart命令通常用于重新启动正在运行的容器,但如果容器已经停止,docker start才是正确的命令。 需要注意的是,有时候用户可能混淆了start和restart的区别。docker restart会先停止容器启动,而docker start则是启动已经停止的容器。因此,在已停止的容器上使用docker start更合适。 另外,引用[4]提到容器可能没有交互式终端,但启动容器不需要进入终端,只需要使用正确的命令即可。确保用户了解如何获取容器ID,可能需要指导他们使用docker ps -a来查看所有容器状态,然后选择需要启动的那个。 最后,总结步骤:1. 查看已停止的容器;2. 使用docker start启动指定容器。如果有需要,还可以提供示例命令,帮助用户更清晰地操作。</think>要重新启动已停止的Docker容器,可以通过以下步骤实现: 1. **查看已停止的容器** 使用命令列出所有容器(包括已停止的): ```bash docker ps -a ``` 在列表中查找状态为`Exited`的容器记录其`CONTAINER ID`或`NAMES` 2. **启动指定容器** 使用以下命令启动容器(支持容器ID或容器名称): ```bash docker start <容器ID或名称> ``` 例如: ```bash docker start 3a5b8c7e docker start my_web_server ``` 3. **验证容器状态** 查看容器是否已运行: ```bash docker ps ``` **注意**: - 如果容器需要持久化运行,建议启动时添加`-d`参数使其后台运行:`docker start -d <容器ID>`[^1] - `docker restart`命令用于重启正在运行的容器,与`docker start`的区别在于前者会先停止再启动容器[^4] - 使用`docker container prune`会删除所有已停止容器,执行前需谨慎[^2]
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值