zoukankan      html  css  js  c++  java
  • Docker for windows部署mysql挂载数据卷

    这段时间在 http://video.jessetalk.cn/ 学习提升,其中涉及到docker在Windows上部署mysql的问题,让我很头疼,经过我的努力,算是半解决了这个问题,为什么是半呢,看过就知道了

    mysql挂载 /etc/my.cnf 的时候没有什么问题,主要是在 /var/lib/mysql 的时候会出现

    我已开始以为是 Windows下路径的问题,我试过了

    e:/docker/mymysql/data
    
    /e/docker/mymysql/data
    
    //e/docker/mymysql/data
    

    都不行,然后看到说可以先在要使用的文件夹的位置上创建一个 volume, 再使用创建的 volume 挂载到容器上去,我进入 e:/docker/mymysql/data 文件夹

    docker create --name mymysql-data
    

    挂载到mysql之后,我的data文件夹里面什么都没有。难道不能直接这么创建?
    我试了 https://docs.docker.com/engine/reference/commandline/volume_create/

    docker create -d e:/docker/mymysql/data --name mymysql-data
    

    多种参数,都没有创建成功,这个方法失败了。

    这个方法可能再别的电脑上是可以的,可是在我这确实是行不通的,如果是我创建的有问题欢迎大家提出来。

    重新看提示的问题,就是因为 /var/lib/mysql/mysql.sock,(在data文件夹中不存在,即使是我手动创建一个,也会被删除并提示这个问题)

    这个文件既然不能放在外面那么放进去呢?

    在my.cnf中添加了

    socket=/var/lib/mysql.sock
    

    还是不行,

    然后我在看mysql生成的my.cnf文件的时候发现了一个有意思的配置

    [mysqld]
    skip-host-cache
    skip-name-resolve
    datadir=/var/lib/mysql
    socket=/var/lib/mysql/mysql.sock
    secure-file-priv=/var/lib/mysql-files
    user=mysql
    
    #log-error=/var/log/mysqld.log
    pid-file=/var/run/mysqld/mysqld.pid
    
    #以下是手动添加的其他配置
    
    character-set-server=utf8
    
    default_authentication_plugin=mysql_native_password
    [client]
    default-character-set=utf8
    [mysql]
    default-character-set=utf8
    

    原来数据库的位置是可以配置的,挂载mysql文件夹不就是想要数据库文件放在容器外面的么

    既然mysql.sock不能换位置,那么就把 datadir=/var/lib/mysql/data

    http://www.fwhyy.com/2018/05/docker-installs-mysql-to-mount-external-data-and-configuration/

    然后我的docker 命令:

    
    docker run -p 3306:3306
    
      --privileged=true
    
      --restart always
    
      --name mymysql
    
      -e MYSQL_USER=fanqinglin
    
      -e MYSQL_PASSWORD=123456
    
      -e MYSQL_ROOT_PASSWORD=123456
    
      --mount type=bind,source=e:/docker/mymysql/config/my.cnf,target=/etc/my.cnf
    
      --mount type=bind,source=e:/docker/mymysql/data,target=/var/lib/mysql/data
    
      --mount type=bind,source=e:/docker/mymysql/scripts/,target=/docker-entrypoint-initdb.d/
    
      -d mysql/mysql-server
    

    嘿嘿嘿,到这里docker里面的mysql终于运行起来了

  • 相关阅读:
    Linux 信号signal处理机制
    va_start、va_arg、va_end、va_copy 可变参函数
    辛星笔记——VIM学习篇(推荐阅读)
    每个程序员都应该读的书
    igmpproxy源代码学习——配置信息加载 loadConfig
    windows下gvim搭建IDE
    插入排序与循环不变式
    6个变态的C语言程序
    安卓原生百度地图(5)导航和语音播报
    安卓原生百度地图(4)路线规划
  • 原文地址:https://www.cnblogs.com/T-FQlin/p/9294208.html
Copyright © 2011-2022 走看看