docker容器刚启动就停止 — 运行mysql 报错 mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

本文涉及的产品
云数据库 RDS MySQL Serverless,0.5-2RCU 50GB
云数据库 RDS MySQL Serverless,价值2615元额度,1个月
简介: docker容器刚启动就停止 — 运行mysql 报错 mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

问题:

使用docker run 命令运行mysql成功,但是使用docker ps 看不到容器实例,使用docker ps -a看到刚运行的mysql实例自动退出了,具体情况如下:

执行如下命令想要创建一个mysql容器实例,

docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql \
-e MYSQL_ROOT_PASSWORD=root  \
-d mysql:5.7


执行完后使用docker ps查看,未找到,然后使用docker ps -a查看,看到已经退出了。

d45538ea931d4767847b52a885ed7cf4.png

原因及解决方案:

检查容器日志

docker logs --tail 100 [容器id]


报错如下:

\2023-03-14 03:56:38+00:00 [Note] [Entrypoint]: Entrypoint script for MySQL Server 5.7.41-1.el7 started.

2023-03-14 03:56:38+00:00 [ERROR] [Entrypoint]: mysqld failed while attempting to check config

command was: mysqld --verbose --help --log-bin-index=/tmp/tmp.UZOXvK5dSl

mysqld: Can’t read dir of ‘/etc/mysql/conf.d/’ (Errcode: 2 - No such file or directory)

mysqld: [ERROR] Fatal error in defaults handling. Program aborted!

73c84c4a7b1840569552266034eade8c.png

日志显示,在mysql容器启动时,没有读取到配置文件。而配置文件是我们在创建容器时,挂载数据卷时设置的,于是明确问题定位在了创建容器的命令中。发现在挂载数据卷的时候,只指定了配置文件所在的文件夹,并没有明确的指定要挂载文件夹中的哪些文件。

在报错的mysqld: Can't read dir of '/etc/mysql/conf.d/' (Errcode: 2 - No such file or directory)这句话中,也明确指明了找不到/etc/mysql/conf.d/这个目录,于是就要修改第三个-v。

修改docker run 命令如下:

docker run -p 3307:3306 --name mysql-master \
-v /mydata/mysql-master/log:/var/log/mysql \
-v /mydata/mysql-master/data:/var/lib/mysql \
-v /mydata/mysql-master/conf:/etc/mysql/conf.d \
-e MYSQL_ROOT_PASSWORD=123456  \
-d mysql:5.7


再次执行就不会自动退出了。

ebdaef87c41442a984f9c25661ee176a.png

在后面学习devops使遇到了类似的这种情况:

使用docker run命令启动容器后,用docker ps命令查看,找不到刚才运行的容器,使用docker ps -a查看,刚才运行的容器已经处于停止状态,相当于刚运行就被停止了。

在后面加上-c "tail -f /dev/null"表示不中断

docker run -id -p 8082:8082  --name test-7  582698141c6c /bin/bash  -c "tail -f /dev/null"

75f97c637b844262933f66f34262a105.png

看到的老师如果遇到过这种情况,烦请留言解答,我将不胜感激。

相关实践学习
基于CentOS快速搭建LAMP环境
本教程介绍如何搭建LAMP环境,其中LAMP分别代表Linux、Apache、MySQL和PHP。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
3天前
|
存储 监控 安全
【专栏】Docker Compose:轻松实现容器编排的利器
【4月更文挑战第27天】Docker Compose是款轻量级容器编排工具,通过YAML文件统一管理多容器应用。本文分三部分深入讨论其核心概念(服务、网络、卷和配置)、使用方法及最佳实践。从快速入门到高级特性,包括环境隔离、CI/CD集成、资源管理和安全措施。通过案例分析展示如何构建多服务应用,助力高效容器编排与管理。
|
3天前
|
存储 Kubernetes C++
【专栏】Kubernetes VS Docker Swarm:哪个容器编排工具更适合你?
【4月更文挑战第27天】对比Kubernetes和Docker Swarm:K8s在可扩展性和自动化方面出色,有强大社区支持;Swarm以简易用著称,适合初学者。选择取决于项目需求、团队技能和预期收益。高度复杂项目推荐Kubernetes,快速上手小项目则选Docker Swarm。了解两者特点,助力选取合适容器编排工具。
|
3天前
|
Cloud Native Linux 开发者
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
【Docker】Docker:解析容器化技术的利器与在Linux中的关键作用
|
1天前
|
存储 虚拟化 数据中心
|
1天前
|
运维 Prometheus 监控
构建高效稳定的Docker容器监控体系
【4月更文挑战第29天】在微服务架构日益普及的当下,Docker作为轻量级容器的代表,被广泛应用于服务部署与管理。然而,随之而来的是复杂化的服务监控问题。本文旨在探讨如何构建一个高效且稳定的Docker容器监控体系,确保服务的高可用性。我们将从监控工具的选择、关键监控指标的确定,以及告警机制的设计等方面进行详细阐述,并提供一系列优化实践,以期为运维人员提供参考和指导。
|
2天前
|
Java Maven Docker
基于docker容器化部署微服务
基于docker容器化部署微服务
5 0
|
2天前
|
网络协议 Java Docker
使用docker编排容器(下)
使用docker编排容器(下)
8 0
|
2天前
|
Java 应用服务中间件 nginx
使用docker编排容器(上)
使用docker编排容器
7 0
|
2天前
|
Prometheus 监控 Cloud Native
构建高效的Docker容器监控体系
【4月更文挑战第28天】 在微服务架构和容器化部署日益普及的今天,对容器进行有效的性能监控成为确保系统稳定性的关键。本文将深入探讨如何构建一个高效的Docker容器监控体系,覆盖从监控指标的选择、数据采集、存储到可视化展示的全流程。我们将分析现有监控工具的优势与局限,并提出一种综合使用Prometheus、Grafana和自定义监控脚本的解决方案,旨在为运维人员提供实时、准确的容器监控数据,帮助快速定位并解决潜在问题。
14 1
|
2天前
|
Linux 网络安全 Docker
【Linux】-docker配置容器并打包成镜像
【Linux】-docker配置容器并打包成镜像