docker 数据卷 mysql_使用Docker快速搭建Mysql,并进行数据卷分离

1、搜索镜像

docker search mysql

2、下载mysql的官方镜像

docker pull mysql

3、查看自己的镜像

[root@localhost mysql]# docker images

REPOSITORY TAG IMAGE ID CREATED SIZE

wordpress latest e6bc04e5d2ab 4 weeks ago 442MB

mysql latest 5195076672a7 7 weeks ago 371MB

hello-world latest f2a91732366c 5 months ago 1.85kB

4、启动MySQL容器

docker run -d --name myMysql -v /data/mysql:/var/lib/mysql -v /data/mysql/conf:/etc/mysql/conf.d -e MYSQL_ROOT_PASSWORD=123456 -p 3306:3306 mysql:5.6

d : --detach,后台运行。

--name : 为你的镜像创建一个别名,该别名用于更好操作。

-p : 映射端口,一般我们会将默认端口进行更改,避免与本机的mysql端口冲突,如果你宿主机有mysql,请更改端口,如 -p 33060:3306。

-e : 环境变量。为mysql的root用户设置密码为123456。

-v : 指定数据卷,意思就是将mysql容器中的/var/lib/mysql(这个是数据库所有数据信息文件)映射到宿主机/data/mysql里面。

5、进入到myMysql容器中

docker exec -ti myMysql /bin/bash

-i : --interactive,交互界面。

-t : --tty,伪终端界面。

6、登录到mysql服务器中

mysql -uroot -p -h127.0.0.1

7、查看myMysql容器的IP

[root@localhost mysql]# docker inspect myMysql | grep "IPAddress"

"SecondaryIPAddresses": null,

"IPAddress": "172.17.0.2",

"IPAddress": "172.17.0.2",

8、-v参数

这时,其实数据卷已经进行了分离,还记得启动容器时我们携带的“-v”参数么。

# 在宿主机执行

ls /data/mysql

删除容器,看数据卷是否还在

docker rm myMysql

依然还在,这说明如果我们创建新的mysql容器,那么只需要指定数据卷就可以了。

9、细节处还需深入研究

docker -v /data/mysql:/var/lib/mysql

以上这条命令到底是咋运行的。

第一次,启动mysql容器时,宿主机的/data/mysql是空的。是docker容器中的/var/lib/mysql会自动映射到宿主机/data/mysql,让宿主机有了对应的文件信息。

第二次,我删除了docker容器,这时宿主机的/data/mysql是有文件的。然后我创建了mysql容器,并设置对应的映射关系。这时,宿主机的/data/mysql文件映射到了容器中,保持数据一致。

这就产生疑问了?到底是以哪一个为主要的数据呢?

总结 基本上可以了解为这样一个流程,当指定-v参数时,在启动容器时会首先检查宿主机中是否有数据文件:

如果有的话,则判断是否是数据库文件,如果符合数据库文件系统的文件目录。那么则会使用;如果不符合数据库文件系统的文件目录,那么则会无法启动,直接报错。 如果没有的话则会初始化数据库文件,生成一个干净的数据库系统并进行宿主机和docker容器间的互通。

10、docker相关命令

docker ps 默认显示运行的容器

docker ps -a 显示所有容器

docker stop myMysql 停止容器

docker rm -fv myMysql 删除容器,连卷也一起删除

docker logs myMysql 查容器启动失败日志

docker inspect mysql 查镜像详情

docker pull mysql:5.6

11、注意事项

不这样操作 容器运行不起来

在使用-v选项映射目录时,宿主机需关闭SElinux:

# setenforce 0

或者给数据目录添加相关selinux权限:

chcon -Rt svirt_sandbox_file_t /data/mysql

最后自己发现还都不行,需要把自己手动创建的目录/data/mysql删除了,再成功启动容器

补充,还有可能是用了最新版本的MySQL8.0

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值