使用卷时无法在主机上使用 mysql 套接字

2024-02-18

我来自这里:

如何在主机网络上运行 docker-compose? https://stackoverflow.com/questions/56203642/how-to-run-docker-compose-with-host-network

我意识到的问题是mysql_connect使用套接字时localhost作为主机输入。结果,我的主机系统上的 php 无法找到套接字,因为该套接字位于容器中。

当我和compose-docker我可以读这个

版本:“5.6.44”套接字:“/var/run/mysqld/mysqld.sock”端口:3306 MySQL 社区服务器(GPL)

所以我认为我逻辑上所做的就是在我的主机上输入 php 中的 mysql_connect 套接字配置,以指向/var/run/mysqld/mysqld.sock

但它在我的容器中,所以找不到它。

结果,我尝试映射容器目录/var/run/mysqld到某个主机目录,这样我就可以在主机上的 php.ini 中使用该主机套接字目录。

But:

当我启动时我得到:

无法启动服务器:绑定在 unix 套接字上:权限被拒绝

您是否已经有另一个 mysqld 服务器在套接字上运行

因此,映射套接字文件夹会以某种方式给 docker 容器带来读写问题。有什么办法解决这个问题吗?

我的 yml 文件是这样的:

version: '3.3'
services:
  sciodb:
    container_name: sciodb
    image: mysql:5.6
    restart: always
    environment:
      MYSQL_DATABASE: 'db'
      # So you don't have to use root, but you can if you like
      MYSQL_USER: 'myuser'
      # You can use whatever password you like
      MYSQL_PASSWORD: 'test1234'
      # Password for root access
      MYSQL_ROOT_PASSWORD: 'test1234'
    ports:
      # <Port exposed> : < MySQL Port running inside container>
      - '3306:3306'
    expose:
      # Opens port 3306 on the container
      - '3306'
      # Where our data will be persisted
    volumes:
      - /home/myuser/nmyapp_db:/var/lib/mysql
      - /media/sf_vmwareshare:/var/vmwareshare
      - /home/myuser/nmyapp_socket:/var/run/mysqld

我刚刚在 CentOS 8 上解决了同样的问题。 容器内的MySQL进程没有写入sock文件的权限。

  1. 不要映射套接字文件本身(例如 mysqld.sock) - 相反,将相应的目录(例如 /var/run/mysqld/)映射到主机系统。

  2. 正确设置该目录的权限(例如/var/run/mysqld/)。检查主机上数据库目录的所有权(在您的情况下为 /home/myuser/nmyapp_db )并使用相同的用户。

您将看到 - MySQL 将启动。

BUT:

/var/run/ 指向 /run 并且是一个 tmpfs - 重新启动后权限消失,MySQL 将不再启动。

我使用了一个简单的技巧:

systemctl edit docker

ExecStartPre=-mkdir /var/run/mariadb101/
ExecStartPre=chown systemd-coredump.input /var/run/mariadb101/

更改路径和用户名以匹配您的系统。

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

使用卷时无法在主机上使用 mysql 套接字 的相关文章

  • docker-compose:容器之间的 Redis 连接被拒绝

    我正在尝试设置一个 docker compose 文件 该文件旨在替换运行多个进程 RQ 工作线程 RQ 仪表板和 Flask 应用程序 的单个 Docker 容器解决方案导师 http supervisord org 主机系统是 Debi
  • “docker-compose run”命令后卷更改不持久(Django 的collectstatic)

    我有一个使用 Docker Compose 创建的 Django 环境 我正在尝试使用manage py collectstatic将我网站的静态文件复制到容器中的目录中 该目录 usr src app static 也是一个 Docker
  • docker-compose 容器在多个项目中使用错误的容器

    我有两个项目 需要两个不同的docker环境 容器 我有两个docker compose yml两个不同项目中的文件 foo项目和bar项目 foo src website docker compose yml 1 foo version
  • 通过套接字发送包含文件的字典(python)

    是否可以通过套接字发送包含文件 图像或文档 作为值的字典 我尝试了类似下面的东西 但失败了 with open cat jpeg rb as f myFile f read 2048 data id 1283 filename cat jp
  • .m2 的 Docker 缓存在本地不起作用

    考虑这个 gitlab ci yml variables MAVEN OPTS Dmaven repo local root m2 repository cache key M2 paths root m2 repository 当直接在
  • 使用 testcontainer 作为 Dockerfile 的一部分运行测试

    我的 dockerfile 看起来像这样 FROM maven 3 jdk 11 slim COPY pom xml COPY src src RUN mvn clean install 这意味着构建的一部分是单元测试的执行 一些单元测试使
  • uwsgi协议比http协议快吗?

    我正在尝试部署 django 应用程序的各种设置 我的第一选择是使用带有 mod wsgi 的简单 apache 服务器 我之前已经实现了该服务器供私人使用 由于当前的部署是供公众使用的 因此我正在考虑各种选择 根据网上提供的信息 使用 n
  • Docker Compose - 如何执行多个命令?

    我想做这样的事情 我可以在以下代码中运行多个命令 db image postgres web build command python manage py migrate command python manage py runserver
  • Docker nginx 代理到主机

    简短的介绍 Nginx 运行在 docker 上 如何配置 nginx 以便将调用转发到主机 详细描述 我们有一个 Web 应用程序与几个后端通信 假设为rest1 rest2 和rest3 我们负责rest1 让我们考虑一下我开始rest
  • Windows docker:权限被拒绝 /var/run/docker.sock

    当我尝试使用自动发现运行 filebeat 时 出现以下错误 退出 自动发现提供程序设置中出现错误 已获得权限 尝试连接到 Docker 守护程序套接字时被拒绝 unix var run docker sock 获取http 2Fvar 2
  • Docker 主机上运行的容器是否有最大数量?

    基本上 标题说明了一切 在单个 Docker 主机上同时运行的容器数量是否有限制 您可能会遇到 并解决 许多系统限制 但存在大量灰色区域 具体取决于 您如何配置 Docker 容器 您在容器中运行的内容 您使用的内核 发行版和 docker
  • 套接字编程-listen() 和accept() 有什么区别?

    我一直在读本教程 http www cs rpi edu moorthy Courses os98 Pgms socket html了解套接字编程 看来listen and accept 系统调用都做同样的事情 即阻塞并等待客户端连接到使用
  • Docker 容器中的并行代码执行

    我有一个通过 URLslist 抓取数据的脚本 该脚本在 docker 容器中执行 我想在多个实例中运行它 例如 20 个 为此 我想使用docker compose scale worker 20并将 INDEX 传递给每个实例 以便脚本
  • Docker CentOS systemctl 不允许

    我尝试使用 systemctl 命令构建 CentOS 映像 但每次当我建造它时 我收到此错误 Step 5 7 RUN systemctl enable syslog ng systemctl start syslog ng gt Run
  • Heroku 码头部署

    我正在关注这篇文章https devcenter heroku com articles container registry and runtime https devcenter heroku com articles containe
  • 使用 docker-compose 从私有 GitHub 存储库构建 Docker 镜像

    我知道可以提供 GitHub HTTP URL 作为服务的构建上下文 version 3 9 services my app build https github com rambo my app git 上述方法对于公共回购来说效果很好
  • 无法连接到docker中的elasticsearch容器

    我正在尝试使用 docker 的官方 elasticsearch 镜像 我遵循了本指南 https www elastic co guide en elasticsearch reference current docker html但是当
  • 无法通过docker连接到ASP.NET Core

    大家好 人们已经关注这个问题太久了 需要一些帮助 我制作了一个 ASP NET Core 网站 没有什么特别的 只是 VS 2017 v 1 1 附带的模板 我使用 dotnet core cli 发布网站并使用此 dockerfile 构
  • UDP接收和发送Matlab

    我目前正在努力从外部设备接收数据包 然后将数据发送到另一个设备 我有一个工作 Simulink 模型 但我不知道如何在 Matlab 中对其进行编码 Matlab 中 UDP 接收块的参数如下图所示UDP 接收参数 https i stac
  • Docker - 如何通过 API 将输入发送到程序

    我一直在使用 Docker 的远程 API 创建一个容器 在其中运行一个 Python 程序 附加到该容器并将写入 stdout 的输出流式传输到网络 现在 我希望我的 Python 程序接受来自 stdin 的用户输入 例如 import

随机推荐