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上去的镜像,目前未提供删除功能(客服说是以后会提供),一旦上传了,目前就没办法删除了,所以千万不要在镜像里放一些敏感信息。
参考文章:
docker学习(5) 在mac中创建mysql docker容器的更多相关文章
- 十五、mac 中登陆mysql忘记密码解决办法
mac 中登陆mysql忘记密码解决办法 1.打开终端,输入命令:cd /usr/local/mysql/bin 2.mysql -uroot -p,用这条命令登陆时报错信息: 报错:Enter pa ...
- Docker学习笔记二(linux下安装Docker)
Docker学习笔记二(linux下安装Docker) 1.在线安装linux Docker 这种方式首先要保证linux 环境下可以上网,当然,小编是在自己的电脑上安装了虚拟机,在虚拟机上安装了,l ...
- Docker学习笔记--2 镜像的创建
如果我们需要在Docker环境下部署tomcat.redis.mysql.nginx.php等应用服务环境,有下面三种方法: 1,根据系统镜像创建Docker容器,这时容器就相当于是一个虚拟机,进入容 ...
- mac上创建MySQL的基本步骤
首先得安装环境与MySQL的软件 安装环境的软件在这里我用的是:jdk-8u111-macosx-x64.dmg MySQL:mysql-5.7.16-osx10.11-x86_64.dmg 安装好了 ...
- docker学习系列(五):使用docker创建集成服务--lnmp
在掌握了docker的基本命令之后,我也是想着去用docker做一点实际的配套环境,就拿自己最常用的lnmp环境来做测试.配套环境运行的顺序依次是mysql->php->nginx,至于为 ...
- Docker学习笔记之通过 Dockerfile 创建镜像
0x00 概述 由于 Docker 镜像的结构优势,使它的占用空间远小于普通的虚拟机镜像,而这就大幅减少了 Docker 镜像在网络或者其他介质中转移所花费的时间,进而提高了我们进行迁移部署的效率.不 ...
- 如何在Mac中创建MiniKube
转载请标明出处: http://blog.csdn.net/forezp/article/details/82563153 本文出自方志朋的博客 这篇文章介绍了如何在Mac系统中创建MiniKube. ...
- shell中创建mysql库和执行sql脚本
以前执行oracle脚本都是放到plsql中执行 mysql 脚本执行: (1).先创建一个worlddb库 (2).导入sql脚本: 这就ok啦,哈哈.
- Docker学习笔记_使用Dockerfile创建flask的一个镜像
一.实验环境 1.宿主机OS:Win10 64位 2 .虚拟机OS:Ubuntu18.04 64位 虚拟机名称:Ubuntu18VM1 虚拟机IP:192.168.8.25 3.账号:doc ...
随机推荐
- 读书笔记--SQL必知必会04--过滤数据
4.1 使用WHERE子句 在SELECT语句中,数据根据WHERE子句中指定搜索条件进行过滤. 搜索条件(search criteria)也称为(filter condition). WHERE子句 ...
- 分享在winform下实现模块化插件编程-优化版
上一篇<分享在winform下实现模块化插件编程>已经实现了模块化编程,但我认为不够完美,存在以下几个问题: 1.IAppContext中的CreatePlugInForm方法只能依据完整 ...
- 『.NET Core CLI工具文档』(十二)dotnet-pack
说明:本文是个人翻译文章,由于个人水平有限,有不对的地方请大家帮忙更正. 原文:dotnet-pack 翻译:dotnet-pack 名称 dotnet-pack - 将代码打包成 NuGet 包 概 ...
- java泛型基础
泛型是Java SE 1.5的新特性, 泛型的本质是参数化类型, 也就是说所操作的数据类型被指定为一个参数. 这种参数类型可以用在类.接口和方法的创建中, 分别称为泛型类.泛型接口.泛型方法. Ja ...
- 5分钟创建一个SpringBoot + Themeleaf的HelloWord应用
第一步:用IDE创建一个普通maven工程,我用的eclipse. 第二步:修改pom.xml,加入支持SpringBoot和Themeleaf的依赖,文件内容如下: <?xml version ...
- 一个Java文件至多包含一个公共类
编写一个java源文件时,该源文件又称为编译单元.一个java文件可以包含多个类,但至多包含一个公共类,作为编译时该java文件的公用接口,公共类的名字和源文件的名字要相同,源文件名字的格式为[公共类 ...
- MyBatis魔法堂:Insert操作详解(返回主键、批量插入)
一.前言 数据库操作怎能少了INSERT操作呢?下面记录MyBatis关于INSERT操作的笔记,以便日后查阅. 二. insert元素 属性详解 其属性如下: parameterType ...
- 《连载 | 物联网框架ServerSuperIO教程》- 3.设备驱动介绍
1.C#跨平台物联网通讯框架ServerSuperIO(SSIO)介绍 <连载 | 物联网框架ServerSuperIO教程>1.4种通讯模式机制. <连载 | 物联网框架Serve ...
- CentOS7上安装QGIS
1.加入YUM源 rpm -Uvh http://download.fedoraproject.org/pub/epel/7/x86_64/e/epel-release-7-8.noarch.rpm ...
- iOS报错[__NSCFNumber length]: unrecognized
出现这种报错很大的原因是因为类型给错了,或许你这个数据是从json上解析后得到的,但是需要看一下这个数据是NSString还是NSNumber类型,如果是NSNumber类型的话,你又直接使用NSSt ...