【问题标题】:How to mount Docker MySQL Data/Socket volume on Windows 10?如何在 Windows 10 上挂载 Docker MySQL 数据/套接字卷?
【发布时间】:2020-01-20 17:34:09
【问题描述】:

我正在尝试在 Windows 10 上简单地运行最新的 docker mysql 映像,并安装主机中的数据目录。

我在跑步

docker run --rm --name=mysql --mount type=bind,src="C:\Docker Projects\mysql\mysql_data",dst=/var/lib/mysql mysql/mysql-server  

但它抱怨套接字不存在。

2020-01-20T17:23:22.758269Z 0 [ERROR] [MY-010270] [Server] Can't start server : Bind on unix socket: Operation not permitted
2020-01-20T17:23:22.758416Z 0 [ERROR] [MY-010258] [Server] Do you already have another mysqld server running on socket: /var/lib/mysql/mysql.sock ?

我可以看到创建了一个 mysql mysql.sock.lock。我也尝试过从主机创建一个 mysql.sock 文件。

我认为这告诉我我需要为 Windows https://dev.mysql.com/doc/refman/5.7/en/deploy-mysql-nonlinux-docker.html 指定套接字文件的位置,但我似乎无法正确获取命令语法?

【问题讨论】:

    标签: mysql docker containers windows-container


    【解决方案1】:

    你是对的。问题是 mysql.sock 文件被放入 /var/lib/mysql 中,该文件被挂载到不支持 Unix 域套接字的 Windows 主机系统目录中。

    启动服务器时只需使用开关--socket=/tmp/mysql.sock

    【讨论】:

      【解决方案2】:

      如果您需要它为 docker-compose 工作,您可以使用以下 docker-compose.ymlmy.cnf 文件。

      在 my.cnf 文件中,套接字位置从 socket=/var/lib/mysql/mysql.sock 更改为 socket=/tmp/mysql.sock

      docker-compose.yml

      version: "3.7"
      services:
        mysql:
          image: mysql/mysql-server:5.7.27
          volumes:
            - "./my.cnf:/etc/my.cnf"
      

      my.cnf

      # For advice on how to change settings please see
      # http://dev.mysql.com/doc/refman/5.7/en/server-configuration-defaults.html
      
      [mysqld]
      #
      # Remove leading # and set to the amount of RAM for the most important data
      # cache in MySQL. Start at 70% of total RAM for dedicated server, else 10%.
      # innodb_buffer_pool_size = 128M
      #
      # Remove leading # to turn on a very important data integrity option: logging
      # changes to the binary log between backups.
      # log_bin
      #
      # Remove leading # to set options mainly useful for reporting servers.
      # The server defaults are faster for transactions and fast SELECTs.
      # Adjust sizes as needed, experiment to find the optimal values.
      # join_buffer_size = 128M
      # sort_buffer_size = 2M
      # read_rnd_buffer_size = 2M
      skip-host-cache
      skip-name-resolve
      datadir=/var/lib/mysql
      socket=/tmp/mysql.sock
      secure-file-priv=/var/lib/mysql-files
      user=mysql
      
      # Disabling symbolic-links is recommended to prevent assorted security risks
      symbolic-links=0
      
      log-error=/var/log/mysqld.log
      pid-file=/var/run/mysqld/mysqld.pid
      

      【讨论】:

        猜你喜欢
        • 2016-04-30
        • 1970-01-01
        • 2023-04-09
        • 1970-01-01
        • 1970-01-01
        • 1970-01-01
        • 2017-08-17
        • 2021-07-16
        • 2017-12-05
        相关资源
        最近更新 更多