1.docker下载(环境为centos7)
yum install docker-engine
2.下载完成后启动docker
使用命令:service docker start
3.为docker下载镜像提速
curl -sSL https://get.daocloud.io/daotools/set_mirror.sh | sh -s http://fe8a7d6e.m.daocloud.io
这是一个较快的国内镜像
4.文件准备
4-1.Dockerfile (文件完整名字即Dockerfile 无后缀)
FROM mysql:5.7
#设置免密登录
ENV MYSQL_ALLOW_EMPTY_PASSWORD yes
#将所需文件放到容器中
COPY setup.sh /Data/setup.sh
COPY sqlData.sql /Data/sqlData.sql
COPY changeUser.sql /Data/changeUser.sql
#设置容器启动时执行的命令
CMD ["sh", "/Data/setup.sh"]
Dockerfile 文件设置了docker服务的运行步骤
(1)下载一个版本5.7的mysql镜像;
(2)设置镜像内置mysql可以免密码登陆;(好处待会儿说) ;
(3-5)将本目录下三个文件复制到镜像系统/Data/下;(我是root用户登陆,初始文件夹为root)
(6)容器启动时候执行的脚本。(容器 镜像区别自行百度)
4-2.setup.sh(shell脚本 内容为容器启动时执行的命令,且脚本已复制到容器/Data/文件夹下 )
#!/bin/bash
echo `service mysql status`
echo '1 Service Start.....'
service mysql start
sleep 3
echo `service mysql status`
echo '2.In data....'
mysql< /Data/schema.sql
sleep 3
echo '2.In user docker 123456....'
mysql< /Data/changeUser.sql
echo '3 ok.....'
sleep 3
echo `service mysql status`
echo '4 ok'
tail -f /dev/null
注意点:
sleep 3 脚本执行延迟三秒。
echo ' ' 可将''之间内容输出 echo `` 可将``之间命令的结果返回。
service mysql start 启动容器中mysql服务。
mysql< /Data/schema.sql 命令是调用mysql命令去执行sql文件
4-3.schema.sql(此文件用来初始化数据库,包括建库,建表插入数据)
create database `mydocker` default character set utf8 collate utf8_general_ci;
use docker;
这里只是建立一个数据库 mydocker 后面可加建表语句 并且插入数据· 随意。
4-4.changeUser.sql
use mysql;
select host, user from user;
create user myself identified by '123123';
grant all on mydocker.* to myself@'%' identified by '123123' with grant option;
flush privileges;
为了初始化数据,我们之前设置了,免密登陆数据可,所以这个sql用来为sql设置一个myself用户 密码123123 并且将之前建立的mydocker数据库权限给myself用户。
5.创建镜像
docker build -t my4/docker-mysql . (.表示寻找本路径下dockerfile文件)
使用命令docker images 可看到创建的镜像
运行容器:
docker run -i -t -p3306:3306 imagesid(我们的id可以上图名称代替my4/docker-mysql)
还有下一半截图:
6.登录使用
我的主机是win10 安装有navicate Centsos在虚拟机
linux 使用ifconfig 可查看虚拟机ip。
win10下使用mavicate连接 成功0.0.
7.如果我们不需要初始化数据库,只需要使用navicate root用户能连接就好,我们可使用另一个脚本文件setup2.sh
#!/bin/bash
echo `service mysql status`
echo '1 Service Start.....'
service mysql start
sleep 3
echo `service mysql status`
echo '2.In data....'
mysql<
直接设置root用户 登陆密码root 然后用nacicate连接再做其他操作就可以。记得那末Dockerfile文件也就可以去掉copy sql文件的那几步了。
注意事项:
1.直接复我的教程文件,念贴到虚拟机里有错误哦。dos 和linux格式问题。
.sh文件从网上复制过来后,在linux系统里会出现各种问题 类似 '$\r' '\r' 找不到路径文件等等。在linux系统下
yum install dos2unix
dos2unix **.sh 进行转换
2.setup2.sh里面
update user set password=PASSWORD("root") where user='root';
update user set host='%' where user='root';
这个语句适用于5.6版本数据库 5.7以及以上参看changeUser.sql