Linux系统--CentOS7下Mysql(docker)镜像创建,用户,表以及数据初始化

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文件)       
Linux系统--CentOS7下Mysql(docker)镜像创建,用户,表以及数据初始化_第1张图片


使用命令docker images 可看到创建的镜像

Linux系统--CentOS7下Mysql(docker)镜像创建,用户,表以及数据初始化_第2张图片


运行容器:

docker run -i -t  -p3306:3306   imagesid(我们的id可以上图名称代替my4/docker-mysql) 
Linux系统--CentOS7下Mysql(docker)镜像创建,用户,表以及数据初始化_第3张图片

还有下一半截图:

Linux系统--CentOS7下Mysql(docker)镜像创建,用户,表以及数据初始化_第4张图片


6.登录使用

我的主机是win10 安装有navicate  Centsos在虚拟机

linux 使用ifconfig 可查看虚拟机ip。

win10下使用mavicate连接  成功0.0.

Linux系统--CentOS7下Mysql(docker)镜像创建,用户,表以及数据初始化_第5张图片


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

你可能感兴趣的:(mysql,docker,dockerfile,centos,linux)