mysql - Docker 数据库容器正在运行。 pid <id> 的另一个进程正在使用 unix 套接字文件

标签 mysql sockets docker

我正在尝试根据此消息中提供的说明运行带有初始化数据库的 docker mysql 容器 https://stackoverflow.com/a/29150538/6086816 .第一次运行后它工作正常,但在第二次运行时,在尝试从脚本执行/usr/sbin/mysqld 后,我得到这个错误:

数据库_1 | 2016-03-19T14:50:14.819377Z 0 [错误] 另一个 pid 为 10 的进程正在使用 unix 套接字文件。

数据库_1 | 2016-03-19T14:50:14.819498Z 0 [错误] 无法设置 unix 套接字锁定文件。

...

mdir_db_1 以代码 1 退出

这可能是什么原因?

最佳答案

我遇到了同样的问题。以下是我尝试解决此问题的步骤 -

  • 首先,使用以下命令停止您的 docker 服务 - “sudo service docker stop”

  • 现在,使用以下路径进入我的 Linux 系统中的 docker 文件夹 - /var/lib/docker.

  • 然后在 docker 文件夹中,您需要进入 volumes 文件夹。此文件夹包含所有容器的卷(每个容器的内存) - cd/卷

  • 进入卷后执行“sudo ls”,您会发现多个具有哈希名称的文件夹。这些文件夹是容器的卷。每个文件夹都以其哈希命名 (您需要检查您的 docker 容器并获取容器卷的哈希值。为此,您需要执行以下步骤 -

Run command "docker inspect 'your container ID' ".

Now you will get a JSON file. It is the config file of your docker container.

Seach for Mounts key within this JSON file. In Mounts, you will get the Name(hash) of your volume. (You will also get the path of your volume within the Mounts. Within Mounts "Name" key is your volume name and "Source" is the path where your volume is located.)).

  • 获得卷的名称后,您可以进入卷文件夹,在此文件夹中您会找到“_data”文件夹。进入这个文件夹。

  • 最后在“_data”文件夹中使用 sudo ls 命令,您将找到一个名为 mysql.sock.lock 的文件夹。通过“rm -f mysql.sock.lock”删除此文件夹。

  • 现在重新启动您的 docker 服务,然后启动您的 docker 容器。它将开始工作。

注意-当您在 docker 容器文件夹中时,请在每个命令中使用 sudo。

关于mysql - Docker 数据库容器正在运行。 pid <id> 的另一个进程正在使用 unix 套接字文件,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/36103721/

相关文章:

php - 无法启动 Google Cloud phpMyAdmin 页面?

hibernate - 本地镜像构建过程在Quarkus中被卡住

java - 如何在java中使用套接字的文件传输程序中包含进度条

docker - Jenkins 声明性管道 : How can I mount a temporary volume associated with the workspace in a docker container?

Docker 无法启动,因为存在具有 id 的 docker 容器?

mysql - 查询中有两个相同的子查询 - 如何使它们为 1?

mysql - 创建触发器的sql语法错误

java - 如何编写Mysql查询以根据日期从数据库中获取数据?

php - 客户端如何在ssl连接中生成公钥?

java - 多播支持在 Java 交易系统中可能有哪些用途?