docker故障no such docker-runc

本文详细记录了在将Docker从1.13版本升级到1.18.09过程中遇到的nosuchdocker-runc问题,包括使用grep和sed命令定位问题,重启docker服务以及重启容器的方法,适合Docker管理员和开发者参考。

二进制升级docker1.13到1.18.09出现no such docker-runc

$ grep -rl 'docker-runc' /var/lib/docker/containers/ | xargs sed -i 's/docker-runc/runc/g'

# 重启所有容器

$ sudo systemctl restart docker 

查看docker容器进程

docker restart $(docker ps -qa)

### 可能的原因分析 当执行 `docker logs` 命令时遇到 `'No such container'` 错误,通常是因为目标容器不存在或者已经被删除。以下是可能的原因及其解决方案: #### 1. **容器已被删除** 如果 MySQL 或 Elasticsearch 容器已经停止并被删除,则会触发此错误。可以通过以下命令检查当前存在的容器列表: ```bash docker ps -a ``` 如果没有找到对应的容器名称或 ID,则说明该容器已被删除[^2]。 #### 2. **拼写错误** 输入的容器名称可能存在拼写错误。确保使用的容器名与实际创建的完全一致。可以再次确认容器名称是否存在: ```bash docker ps -a | grep <container_name> ``` #### 3. **容器未正确启动** 即使容器存在,但如果它从未成功启动过,也可能导致日志为空或无法访问。检查容器状态是否正常运行: ```bash docker inspect <container_name> | grep State ``` 如果显示 `"Status": "exited"`,则表示容器已退出。此时需要进一步排查容器的日志来定位问题原因: ```bash docker logs <container_name> ``` #### 4. **挂载配置不正确** 对于某些数据库类容器(如 MySQL),如果不小心覆盖了默认的日志路径或将日志目录映射到主机上的无效位置,可能会导致日志记录失败。例如,在 Docker Compose 文件中定义如下挂载可能导致问题: ```yaml volumes: - ./logs:/var/log/mysql ``` 这种情况下,需确保宿主机对应目录 `/var/log/mysql` 存在且具有适当权限[^1]。 #### 5. **Elasticsearch 特殊情况** 针对 Elasticsearch 容器,其内部实现依赖于复杂的日志机制,默认情况下不会将所有信息打印至标准输出流 (`stdout`) 中。因此即便容器仍在运行,也有可能看不到预期中的消息内容。建议调整官方镜像参数启用更详细的调试模式: ```bash docker run -e ES_JAVA_OPTS="-Xms512m -Xmx512m" \ -e LOG_LEVEL="DEBUG" elasticsearch:version ``` --- ### 解决方案总结 为了彻底解决这个问题,请按照以下步骤操作: - 验证指定的容器确实存在于本地环境中; - 如果发现容器缺失,则重新构建它们并通过 `-d` 参数保持后台持续运作; - 对于持久化存储需求较高的应用(比如关系型数据库MySQL以及全文检索引擎ElasticSearch),务必合理规划数据卷绑定策略以免因意外销毁而丢失重要资料[^3]; - 调整相关服务初始化脚本使其能够生成更多诊断线索以便后续追踪异常状况的发生源头. ---
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
红包 添加红包
表情包 插入表情
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值