• docker学习(5) 在mac中创建mysql docker容器


    github上有一个专门的docker-libary项目,里面有各种各样常用的docker镜像,可以做为学习的示例,今天研究下其中mysql镜像的用法,国内镜像daocloud.io也能找到mysql的镜像,但根据其参考文档在mac上尝试了数次,将mysql数据库文件存储在mac本机时,启动总是报错,大意是docker容器运行时,容器的当前用户mysql,由于权限不足无法mac本机上创建文件,stackoverflow上有人解决了这个问题,参考其解决方法,重新整理了下Dockerfile文件,内容如下(主要是增加了vim的安装,以方便直接在容器内修改mysql配置文件):

    FROM mysql:latest
    
    MAINTAINER jimmy.yang <yjmyzz@126.com>
    LABEL Descripttion="This image is build for MAC to use mysql" Vendor="GitHub" Version="latest"
    RUN apt-get update
    RUN apt-get -y install vim
    RUN usermod -u 1000 mysql
    RUN mkdir -p /var/run/mysqld
    RUN chmod -R 777 /var/run/mysqld
    

    将上面这段保存成名为"Dockerfile"的文件,然后在当前目录下,输入:

    docker build -t "yjmyzz/mysql-osx:latest" .
    

    注意最后有一个点,-t后的内容为image的tag,可以根据需要修改成自己的内容。build完成后,可用docker images ls确认下是否在本机生成了名为yjmyzz/mysql-osx的镜像,接着就可以创建mysql容器了,示例如下:

    docker run -d -h mysql 
      -v /Users/yjmyzz/data/db/mysql:/var/lib/mysql 
      -p 0.0.0.0:3306:3306 --name mysql 
      -e MYSQL_ROOT_PASSWORD=123456 yjmyzz/mysql-osx
    

    上面有几个参数值大家根据需要自行调整:

    -v 后面的/Users/yjmyzz/data/db/mysql 为mac本机的目录,用于存放mysql数据库文件(创建前要注意该目录必须为空,且必须是当前登录用户~/下,且要有读写权限)

    -p 后面的部分为端口映射

    MYSQL_ROOT_PASSWORD=123456为root账号的密码

    mac上连接验证:

    mysql -h192.168.99.100 -uroot -p123456 

    上面的ip地址,大家换成自己虚拟机default的IP

    mysql参数调整:

    先进入容器

    docker exec -it mysql sh
    

    然后在容器内

    vi /etc/mysql/my.cnf
    

    注意:修改完mysql参数后,如果直接在容器内 service mysql restart ,容器就退出了(因为mysql stop完成的瞬间,没有命令在运行,容器生命周期结束),需要在mac机上执行

    docker start mysql
    

    上传镜象

    为了以后使用方便,可以将mac版的mysql镜像上传到daocloud.io,命令如下:

    docker login daocloud.io
    docker tag yjmyzz/mysql-osx daocloud.io/yjmyzz/mysql-osx:latest
    docker push daocloud.io/yjmyzz/mysql-osx:latest
    

    提醒:daocloud push上去的镜像,目前未提供删除功能(客服说是以后会提供),一旦上传了,目前就没办法删除了,所以千万不要在镜像里放一些敏感信息。  

    参考文章:

    1. 官网dockerfile用法 

  • 相关阅读:
    百度地图js lite api 支持点聚合
    看源码积累知识点
    React 16 源码瞎几把解读 【三 点 二】 react中的fiberRoot
    React 16 源码瞎几把解读 【三 点 一】 把react组件对象弄到dom中去(矛头指向fiber,fiber不解读这个过程也不知道)
    React 16 源码瞎几把解读 【二】 react组件的解析过程
    获得BAT技术专家Offer,他到底做了什么?
    Android 日常开发总结的技术经验
    理解Android虚拟机体系结构
    Android开发人员应该选择哪种语言?
    2019年Android岗位BAT等大厂面试题,希望对新的一年的你有所帮助
  • 原文地址:https://www.cnblogs.com/yjmyzz/p/run-mysql-in-docker-using-mac.html
Copyright © 2020-2023  润新知