docker容器内启动mysql服务,报错:New main PID 99 does not belong to service, and PID file is not owned by root.

本文涉及的产品
容器镜像服务 ACR,镜像仓库100个 不限时长
容器服务 Serverless 版 ACK Serverless,317元额度 多规格
容器服务 Serverless 版 ACK Serverless,952元额度 多规格
简介: docker容器内启动mysql服务,报错:New main PID 99 does not belong to service, and PID file is not owned by root.

从报错来看,大致意思是识别不到PID号99是服务,并且不属于root用户,拒绝使用。

系统 docker版本
CentOS7.6 18.09
[root@243-ceshi mysql_bakup]# uname -a
Linux 243-ceshi 3.10.0-957.el7.x86_64 #1 SMP Thu Nov 8 23:39:32 UTC 2018 x86_64 x86_64 x86_64 GNU/Linux
[root@243-ceshi mysql_bakup]# docker -v
Docker version 18.09.6, build 481bc77156
[root@243-ceshi mysql_bakup]# cat /etc/redhat-release
CentOS Linux release 7.6.1810 (Core)
[root@243-ceshi mysql_bakup]# docker run -di --privileged=true --name mysql0106 -h vrgv-mysql -p 13306:3306 hub.vrgv.com/devops/mysql:20201109  /usr/sbin/init
8baf1a3adc1af7cf2a7557b6b2c7a4e068c4ba2122709aa3b3d394dc2ac90d01
[root@243-ceshi mysql_bakup]# docker exec -it mysql0106 bash
[root@vrgv-mysql /]# mysql -uroot -p
Enter password:
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 2
Server version: 5.7.32 MySQL Community Server (GPL)
Copyright (c) 2000, 2020, Oracle and/or its affiliates. All rights reserved.
Oracle is a registered trademark of Oracle Corporation and/or its
affiliates. Other names may be trademarks of their respective
owners.
Type 'help;' or '\h' for help. Type '\c' to clear the current input statement.
mysql> exit
Bye
[root@vrgv-mysql /]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: activating (start) since Wed 2021-01-06 03:05:36 UTC; 1min 27s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 88 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 71 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
   CGroup: /system.slice/docker-8baf1a3adc1af7cf2a7557b6b2c7a4e068c4ba2122709aa3b3d394dc2ac90d01.scope/system.slice/mysqld.service
           └─99 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
Jan 06 03:05:36 vrgv-mysql systemd[1]: Starting MySQL Server...
Jan 06 03:05:38 vrgv-mysql systemd[1]: New main PID 99 does not belong to service, and PID file is not owned by root. Refusing.
Jan 06 03:05:38 vrgv-mysql systemd[1]: New main PID 99 does not belong to service, and PID file is not owned by root. Refusing.

以上信息中,我的容器式可以正常开启的,并且能进入到mysql数据库中,但是服务是暂停的,报

New main PID 99 does not belong to service, and PID file is not owned by root. Refusing.”


然后查询资料,查找一个解决办法:

启动容器时,映射cgroup内核限制资源目录,具体原因还未确定

[root@243-ceshi mysql_bakup]# docker run -di --privileged=true --name mysql0106 -h vrgv-mysql -v /sys/fs/cgroup:/sys/fs/cgroup -p 13306:3306 hub.vrgv.com/devops/mysql:20201109  /usr/sbin/init
b7548c573fddafbc911918945b7ab3ad412cff1228221f475480ff8e734755c1
[root@243-ceshi mysql_bakup]# docker exec -it mysql0106 bash
[root@vrgv-mysql /]# systemctl status mysqld
● mysqld.service - MySQL Server
   Loaded: loaded (/usr/lib/systemd/system/mysqld.service; enabled; vendor preset: disabled)
   Active: **active (running)** since Wed 2021-01-06 03:18:45 UTC; 11s ago
     Docs: man:mysqld(8)
           http://dev.mysql.com/doc/refman/en/using-systemd.html
  Process: 80 ExecStart=/usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid $MYSQLD_OPTS (code=exited, status=0/SUCCESS)
  Process: 59 ExecStartPre=/usr/bin/mysqld_pre_systemd (code=exited, status=0/SUCCESS)
 Main PID: 82 (mysqld)
   CGroup: /system.slice/docker-b7548c573fddafbc911918945b7ab3ad412cff1228221f475480ff8e734755c1.scope/system.slice/mysqld.service
           └─82 /usr/sbin/mysqld --daemonize --pid-file=/var/run/mysqld/mysqld.pid
Jan 06 03:18:43 vrgv-mysql systemd[1]: Starting MySQL Server...
Jan 06 03:18:45 vrgv-mysql systemd[1]: Started MySQL Server.

启动容器时,添加映射目录参数 -v /sys/fs/cgroup:/sys/fs/cgroup解决此问题。

相关实践学习
如何在云端创建MySQL数据库
开始实验后,系统会自动创建一台自建MySQL的 源数据库 ECS 实例和一台 目标数据库 RDS。
全面了解阿里云能为你做什么
阿里云在全球各地部署高效节能的绿色数据中心,利用清洁计算为万物互联的新世界提供源源不断的能源动力,目前开服的区域包括中国(华北、华东、华南、香港)、新加坡、美国(美东、美西)、欧洲、中东、澳大利亚、日本。目前阿里云的产品涵盖弹性计算、数据库、存储与CDN、分析与搜索、云通信、网络、管理与监控、应用服务、互联网中间件、移动服务、视频服务等。通过本课程,来了解阿里云能够为你的业务带来哪些帮助     相关的阿里云产品:云服务器ECS 云服务器 ECS(Elastic Compute Service)是一种弹性可伸缩的计算服务,助您降低 IT 成本,提升运维效率,使您更专注于核心业务创新。产品详情: https://www.aliyun.com/product/ecs
相关文章
|
14天前
|
存储 SQL NoSQL
|
5天前
|
存储 关系型数据库 MySQL
【赵渝强老师】解决MySQL丢失root用户密码
本文介绍了MySQL数据库中用户密码存储的变化,以及如何通过特殊方法重置root用户的密码。从MySQL 5.7版本开始,密码字段由“password”改为“authentication_string”。文章详细列出了重置密码的步骤,并提供了相关代码示例和视频教程。
|
14天前
|
NoSQL 关系型数据库 MySQL
2024Mysql And Redis基础与进阶操作系列(8)作者——LJS[含MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;注意点及常见报错问题所对应的解决方法]
MySQL 创建、修改、跟新、重命名、删除视图等具体详步骤;举例说明注意点及常见报错问题所对应的解决方法
|
15天前
|
SQL NoSQL 关系型数据库
|
3天前
|
Kubernetes Cloud Native Docker
云原生时代的容器化实践:Docker和Kubernetes入门
【10月更文挑战第37天】在数字化转型的浪潮中,云原生技术成为企业提升敏捷性和效率的关键。本篇文章将引导读者了解如何利用Docker进行容器化打包及部署,以及Kubernetes集群管理的基础操作,帮助初学者快速入门云原生的世界。通过实际案例分析,我们将深入探讨这些技术在现代IT架构中的应用与影响。
12 2
|
9天前
|
关系型数据库 MySQL API
|
5天前
|
运维 持续交付 Docker
深入理解Docker容器化技术
深入理解Docker容器化技术
|
1天前
|
运维 Cloud Native 虚拟化
一文吃透云原生 Docker 容器,建议收藏!
本文深入解析云原生Docker容器技术,涵盖容器与Docker的概念、优势、架构设计及应用场景等,建议收藏。关注【mikechen的互联网架构】,10年+BAT架构经验倾囊相授。
一文吃透云原生 Docker 容器,建议收藏!
|
10天前
|
Java 应用服务中间件 Linux
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
本文主要讲解了Docker的安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库以及Docker容器虚拟化与传统虚拟机比较。
186 7
【Docker容器化技术】docker安装与部署、常用命令、容器数据卷、应用部署实战、Dockerfile、服务编排docker-compose、私有仓库
|
2天前
|
缓存 监控 开发者
掌握Docker容器化技术:提升开发效率的利器
在现代软件开发中,Docker容器化技术成为提升开发效率和应用部署灵活性的重要工具。本文介绍Docker的基本概念,并分享Dockerfile最佳实践、容器网络配置、环境变量和秘密管理、容器监控与日志管理、Docker Compose以及CI/CD集成等技巧,帮助开发者更高效地利用Docker。