docker start启动容器后闪退或者失败

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: docker start启动容器后闪退或者失败

问题描述



笔者使用docker start 启动mysql容器时,显示启动成功,但是1-2s以后mysql又会自动挂掉,很是奇怪。


以下是问题复现:

Unix socket lock file is empty /var/run/mysqld/mysqld.sock.lock.
Unable to setup unix socket lock file.
Aborting


1.启动并查看容器


docker start 容器id
docker ps -a


7fc68eeac62a42218102335696160427.png


解决过程



1.是否是磁盘已满


因为测试服务器本来磁盘就很有限,所以首先想到的是不是磁盘满了,然后就尝试去清理了磁盘,清理完成后再次进行重启发现容器依然还是异常的。


2.查看日志


docker logs 容器id


d70ec7fd14474f108dc1dabe26ab5b31.png


发现图中所示位置,提示mysqld.sock.lock是空的,这里有一点需要注意,这里报的这个路径“/var/run/mysqld/mysqld.sock.lock”这是容器内的路径,所以如果你在宿主机上搜索肯定不是这个路径

# 搜索上面的文件位置
find / -name mysqld.sock.lock

db7af8aed0474e7a8047e1564a56a8d5.png


根据搜索到的路径去找到这个文件即可。


3.解决问题


解决的方式很简单,就是将这个文件mysqld.sock.lock删除即可,为甚么这个文件会异常呢,删除对其他地方有无影响呢?首先说下导致这个异常的方式多种多样,笔者碰到的是因为服务器非正常down机引起的,非正常宕机的情况下,mysql.sock.lock无法正常删除,所以有了这个问题。那这个文件删除了是否对mysql服务有影响呢,其实也没有,这个文件在mysql重新启动时会重新创建,而且mysql.sock.lock只是mysql.sock的锁文件,mysql.sock文件又有什么作用呢,这个文件主要用于客户端与服务端位于一台机子上的服务器,实现本地连接的也就是我们使用localhost可以直接连本地的服务时用的。所以删了这个文件对我们毫无影响。


总结



这个问题的产生原因其实是服务器非正常宕机引起的,导致了这个文件的异常。这里需要注意的是,若是容器没有数据卷,这个问题将很难处理,所以我们平时启动容器一定要做数据卷,不然容器内部的问题真的无法解决(容器无法启动时)。


相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
Linux iOS开发 Docker
Docker:容器化技术的领航者 —— 从基础到实践的全面解析
在云计算与微服务架构日益盛行的今天,Docker作为容器化技术的佼佼者,正引领着一场软件开发与部署的革命。它不仅极大地提升了应用部署的灵活性与效率,还为持续集成/持续部署(CI/CD)提供了强有力的支撑。
192 69
|
1天前
|
Kubernetes Cloud Native 持续交付
云原生之旅:Docker容器化与Kubernetes集群管理
【9月更文挑战第33天】在数字化转型的浪潮中,云原生技术如同一艘航船,带领企业乘风破浪。本篇文章将作为你的航海指南,从Docker容器化的基础讲起,直至Kubernetes集群的高级管理,我们将一起探索云原生的奥秘。你将学习到如何封装应用、实现环境隔离,以及如何在Kubernetes集群中部署、监控和扩展你的服务。让我们启航,驶向灵活、可伸缩的云原生未来。
|
4天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker与Kubernetes入门
【9月更文挑战第30天】在云计算的浪潮中,云原生技术正以前所未有的速度重塑着软件开发和运维领域。本文将通过深入浅出的方式,带你了解云原生的核心组件——Docker容器和Kubernetes集群,并探索它们如何助力现代应用的构建、部署和管理。从Docker的基本命令到Kubernetes的资源调度,我们将一起开启云原生技术的奇妙之旅。
|
9天前
|
Cloud Native 持续交付 Docker
云原生技术入门与实践:Docker容器化部署示例
【9月更文挑战第25天】在数字化转型的浪潮下,云原生技术成为推动企业创新的重要力量。本文旨在通过浅显易懂的语言,为初学者揭示云原生技术的核心概念及其应用价值。我们将以Docker容器为例,逐步引导读者了解如何将应用程序容器化,并在云端高效运行。这不仅是对技术趋势的跟随,更是对资源利用和开发效率提升的探索。
29 4
|
7天前
|
Kubernetes Linux 开发者
深入探索Docker容器化技术的奥秘
深入探索Docker容器化技术的奥秘
16 1
|
10天前
|
存储 Docker 容器
Docker中容器间的通信方式有哪些13
Docker中容器间的通信方式有哪些13
14 4
|
5天前
|
网络协议 安全 开发者
掌握 Docker 网络:构建复杂的容器通信
在 Docker 容器化环境中,容器间的通信至关重要。本文详细介绍了 Docker 网络的基础知识,包括网络驱动、端口映射和命名等核心概念,并深入探讨了 Bridge、Host、Overlay 和 Macvlan 四种网络类型的特点及应用场景。此外,还提供了创建、连接、查看和删除自定义网络的命令示例,以及高级网络配置方法,如网络命名空间、DNS 解析和安全通信配置,帮助开发者构建更健壮的容器化应用。
|
6天前
|
Cloud Native 持续交付 Docker
深入解析Docker容器化技术及其在生产环境中的应用
深入解析Docker容器化技术及其在生产环境中的应用
10 0
|
7天前
|
存储 Kubernetes Docker
深入探索容器化技术:Docker 实战与 Kubernetes 管理
深入探索容器化技术:Docker 实战与 Kubernetes 管理
21 0
|
8天前
|
Docker 容器
docker容器内需要执行sudo hwclock --systohc吗
docker容器内需要执行sudo hwclock --systohc吗
下一篇
无影云桌面