docker 部署mysql

https://www.jianshu.com/p/530d00f97cbf
https://blog.csdn.net/qq_32616177/article/details/80452456
https://www.jianshu.com/p/6a1b06ab8734
https://www.jianshu.com/p/33f7a3333118
1、加上-v参数
$ docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql
还可以指定配置文件
docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql

这样,即可修改配置文件,还能把数据存在本地目录,一举两得,-v 参数可以多次使用,每次映射一个目录,通过这种方式,很容易进行配置。。

docker run -d -p 3306:3306 -v /home/walter/softwares/tutum-docker-mysql/data:/var/lib/mysql -e MYSQL_PASS="mypass" -t 53cb780844a3

Docker MySQL 把数据存储在本地目录,很简单,只需要映射本地目录到容器即可

1、加上-v参数

$ docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql

还可以指定配置文件

docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql

这样,即可修改配置文件,还能把数据存在本地目录,一举两得,-v 参数可以多次使用,每次映射一个目录,通过这种方式,很容易进行配置。。

docker run -d -e MYSQL_ROOT_PASSWORD=admin --name mysql -v /data/mysql/my.cnf:/etc/mysql/my.cnf -v /data/mysql/data:/var/lib/mysql -p 3306:3306 mysql --lower_case_table_names=1

解释如下:

-d 容器在后台运行

-e MYSQL_ROOT_PASSWORD=admin 配置mysql root的密码

-v 对mysql 的配置文件和数据存储路径进行映射到宿主机,对数据持久化

-p 端口映射

--name 定义容器的名称

--lower_case_table_names=1 定义数据库不区分表名大小写

通过上一节的学习,我们知道了如何部署一个不带数据库的静态nginx页面;但一般的web应用中,还需要部署mysql数据库,本节我们将学习如何使用容器部署mysql数据库。

01

mysql独立部署

我们可以将mysql与web应用部署在同一个容器内,但更一般的用法是将mysql独立部署一个容器。

获取mysql5.6.36官方镜像

(mysql5.7变动较大,推荐使用5.6)

docker pull mysql:5.6.36

我们可以进入mysql:5.6.36容器进行mysql远程登录的相关设置。

运行mysql:5.6.36容器,-p映射为宿主机3306端口

docker run -it -p 3306:3306 mysql:5.6.36 /bin/bash

开启mysql进程

root@0950cf64b8e6:/# service mysql start

进入mysql

root@0950cf64b8e6:/# mysql

修改root用户密码为123456

mysql> update user set password=password("123456") where user='root';

允许远程用户访问(一般应当设置为白名单IP,此处为所有IP)

mysql> GRANT ALL PRIVILEGES ON . TO 'root'@'%' IDENTIFIED BY '123456' WITH GRANT OPTION;

验证是否设置成功,host中含有%

mysql> select host, user from user;

保存退出

mysql> flush privileges;

mysql> exit;

停止容器后,保存当前镜像为webmysql

root@0950cf64b8e6:/# docker stop 0950cf64b8e6

root@0950cf64b8e6:/# docker commit 0950 webmysql

以上设置完成后,我们在宿主机上安装mysql客户端,就可以通过宿主机的IP进行mysql数据库的使用了。

02

mysql数据持久化

对于容器数据库来说,一旦容器停止,容器中的数据就会消失,不利于数据存储,虽然我们可以通过定时commit的方法来保存容器中的数据,但我们有更好的实现方法。

使用-v共享存储

mysql默认的数据存储目录为/var/lib/mysql,我们可以通过宿主机共享容器/var/lib/mysql目录的方式来实现数据的持久化。

带-v参数启动webmysql

docker run -it -v /var/mysql/data:/var/lib/mysql -p 3306:3306 mysql:5.6.36 /bin/bash

镜像启动后,我们启动mysql服务,发现mysql无法启动。查找官方文档,因SElinux服务开启,需要在宿主机执行如下命令:

chcon -Rt svirt_sandbox_file_t /var/mysql/data

或者关闭SElinux也可以。

临时关闭

setenforce 0

修改配置文件,需要重启

vim /etc/selinux/config

SELINUX=disabled

上述配置完成后,仍然无法启动mysql,结合mysql日志查看可能是文件权限的问题,在宿主机上给予共享文件夹对应的权限:

赋予本地存储对应的权限,单读写权限不行

chmod 777 -R /var/mysql/data/

设置完成后,容器可以启动mysql服务。

在宿主机查看/var/mysql/data/文件夹下,发现已经将/var/lib/mysql/文件夹内容同步,使用stop关闭容器后,文件夹数据不会消失。再次启动容器mysql后,数据库内容仍然存在。数据持久化设置完成。

03

连接mysql容器

3.1 mycentos容器使用link连接

启动mysql容器

docker run --name=mysql_server -it -v /var/mysql/data:/var/lib/mysql -p 3306:3306 webmysql /bin/bash

--name=mysql_server指定了容器运行的name

启动mycentos容器

docker run --link=mysql_server:db -it -p 80:80 mycentos /bin/bash

--link=mysql_server:db,指定了能够与mysql数据库容器继续连接,db指定了一个连接的别名

在mycentos上安装mysql客户端后就可以使用命令行登录mysql:

mysql -h db -uroot -p123456

MySQL [(none)]>

在web应用的配置文件中,更改数据库的配置即可:

host: db

username: root

password: 123456

3.2 宿主机使用IP连接

部分情况下,我们可能需要使用宿主机连接登录mysql容器,这样显然不能使用link的方法。

容器与宿主机之间是通过bridge进行的网络连接,我们可以通过使用内网IP地址连接容器mysql。

查看webmysql容器的IP地址,e79dd0dc4f1f为其docker ps显示的ID

docker inspect --format '{ { .NetworkSettings.IPAddress } }' e79dd0dc4f1f

172.17.0.a

其地址为172.17.0.a,我们可以使用该IP地址登录容器mysql

mysql -h 172.17.0.a -uroot -p123456

MySQL [(none)]>

值得注意的是,这种使用IP的方法也适用于容器与容器之间的mysql的连接,容器连接宿主机mysql。

04

更多主题探讨

通过这几节的学习,我们能够使用容器部署网站与数据库,然而对于docker技术而言,这只是其中最基础的使用。以下是与web部署强相关的主题:

1、通过commit,我们能够保存对容器的更改存储在宿主机,但当宿主机出现问题时,就需要进行使用镜像恢复。这涉及到如何备份与恢复images镜像。

2、我们创建容器mycentos与webmysql,都是通过手动的方式,而docker更一般的用法是使用Dockerfile,我们可以尝试这种更简便的使用方法。

05

参考资料

1、MySQL 官方 Docker 镜像的使用,https://www.cnblogs.com/cfrost/p/6241892.html

2、自己学Docker:8.容器的持久化,http://blog.csdn.net/mungo/article/details/51472130

3、mysql,https://hub.docker.com/_/mysql/

4、查看 SELinux状态及关闭SELinux,http://blog.51cto.com/bguncle/957315

5、docker容器链接宿主机mysql,https://segmentfault.com/a/1190000008701796

6、Docker中容器的备份、恢复和迁移,http://www.linuxidc.com/Linux/2015-08/121184.htm

7、Docker使用link建立容器之间的连接,http://www.jianshu.com/p/13752117ff97

©著作权归作者所有,转载或内容合作请联系作者
  • 序言:七十年代末,一起剥皮案震惊了整个滨河市,随后出现的几起案子,更是在滨河造成了极大的恐慌,老刑警刘岩,带你破解...
    沈念sama阅读 206,126评论 6 481
  • 序言:滨河连续发生了三起死亡事件,死亡现场离奇诡异,居然都是意外死亡,警方通过查阅死者的电脑和手机,发现死者居然都...
    沈念sama阅读 88,254评论 2 382
  • 文/潘晓璐 我一进店门,熙熙楼的掌柜王于贵愁眉苦脸地迎上来,“玉大人,你说我怎么就摊上这事。” “怎么了?”我有些...
    开封第一讲书人阅读 152,445评论 0 341
  • 文/不坏的土叔 我叫张陵,是天一观的道长。 经常有香客问我,道长,这世上最难降的妖魔是什么? 我笑而不...
    开封第一讲书人阅读 55,185评论 1 278
  • 正文 为了忘掉前任,我火速办了婚礼,结果婚礼上,老公的妹妹穿的比我还像新娘。我一直安慰自己,他们只是感情好,可当我...
    茶点故事阅读 64,178评论 5 371
  • 文/花漫 我一把揭开白布。 她就那样静静地躺着,像睡着了一般。 火红的嫁衣衬着肌肤如雪。 梳的纹丝不乱的头发上,一...
    开封第一讲书人阅读 48,970评论 1 284
  • 那天,我揣着相机与录音,去河边找鬼。 笑死,一个胖子当着我的面吹牛,可吹牛的内容都是我干的。 我是一名探鬼主播,决...
    沈念sama阅读 38,276评论 3 399
  • 文/苍兰香墨 我猛地睁开眼,长吁一口气:“原来是场噩梦啊……” “哼!你这毒妇竟也来了?” 一声冷哼从身侧响起,我...
    开封第一讲书人阅读 36,927评论 0 259
  • 序言:老挝万荣一对情侣失踪,失踪者是张志新(化名)和其女友刘颖,没想到半个月后,有当地人在树林里发现了一具尸体,经...
    沈念sama阅读 43,400评论 1 300
  • 正文 独居荒郊野岭守林人离奇死亡,尸身上长有42处带血的脓包…… 初始之章·张勋 以下内容为张勋视角 年9月15日...
    茶点故事阅读 35,883评论 2 323
  • 正文 我和宋清朗相恋三年,在试婚纱的时候发现自己被绿了。 大学时的朋友给我发了我未婚夫和他白月光在一起吃饭的照片。...
    茶点故事阅读 37,997评论 1 333
  • 序言:一个原本活蹦乱跳的男人离奇死亡,死状恐怖,灵堂内的尸体忽然破棺而出,到底是诈尸还是另有隐情,我是刑警宁泽,带...
    沈念sama阅读 33,646评论 4 322
  • 正文 年R本政府宣布,位于F岛的核电站,受9级特大地震影响,放射性物质发生泄漏。R本人自食恶果不足惜,却给世界环境...
    茶点故事阅读 39,213评论 3 307
  • 文/蒙蒙 一、第九天 我趴在偏房一处隐蔽的房顶上张望。 院中可真热闹,春花似锦、人声如沸。这庄子的主人今日做“春日...
    开封第一讲书人阅读 30,204评论 0 19
  • 文/苍兰香墨 我抬头看了看天上的太阳。三九已至,却和暖如春,着一层夹袄步出监牢的瞬间,已是汗流浃背。 一阵脚步声响...
    开封第一讲书人阅读 31,423评论 1 260
  • 我被黑心中介骗来泰国打工, 没想到刚下飞机就差点儿被人妖公主榨干…… 1. 我叫王不留,地道东北人。 一个月前我还...
    沈念sama阅读 45,423评论 2 352
  • 正文 我出身青楼,却偏偏与公主长得像,于是被迫代替她去往敌国和亲。 传闻我的和亲对象是个残疾皇子,可洞房花烛夜当晚...
    茶点故事阅读 42,722评论 2 345

推荐阅读更多精彩内容