docker数据卷技术与MySQL实战

1、数据卷技术

在了解什么是数据卷技术前,我一直有一个问题,容器与数据似乎是共存亡的,即删除容器,里面的数据也就没有了。而数据卷技术解决了这个问题。用一句话总结就是:容器的持久化和同步操作及容器间的数据共享。

1. 数据卷应用

命令:

docker run -v  主机目录:容器目录

截图:
在这里插入图片描述

在这里插入图片描述
这样,容器的/home目录就挂载到主机的/home/ceshi下了

使用docker inspect 容器id 命令查看容器的详细信息
在这里插入图片描述
注意:挂载后容器和主机的数据是同步的,即改变主机/home/ceshi 容器/home目录也会改变,反之亦然。

2. 匿名挂载与具名挂载

匿名挂载

docker run -v 容器路径

docker volume ls # 查看所有卷

截图:
在这里插入图片描述
可以看到,它的名字是一长串字符,表示匿名挂载。

具名挂载

docker run -v 卷名:容器路径

截图:
在这里插入图片描述
可以看到,它的名字是我们起的名字,这就是具名挂载。

查看一下具名挂载的卷

docker volume inspect 挂载的卷名

截图:
在这里插入图片描述
我们可以看到,它的挂载位置就是在/var/lib/docker/volumes/juming-nginx/_data
一般情况下,我们会使用具名挂载

挂载方式总结:

  1. -v 容器路径 (匿名挂载)
  2. -v 卷名:容器内路径 (具名挂载)
  3. -v /主机路径:容器内路径 (指定路径挂载)

扩展:

#通过  -v 容器内路径:ro rw 改变文件的读写权限
#如
-v  卷名:容器内路径:ro
-v  卷名:容器内路径:rw

2、MySQL实战

1. 拉取镜像

docker pull mysql:5.7

截图:
在这里插入图片描述

2. 后台启动

命令

docker run --name mysql02 -p 8004:3306 -v /home/mysql/conf:/etc/mysql/conf.d  -e MYSQL_ROOT_PASSWORD=xxx -v /home/mysql/data:/var/lib/mysql -d  mysql:5.7

解释:

  • -v 表示使用数据卷技术,将数据库的配置和数据挂载到主机,这样即使删除容器,数据也还在
  • -d 表示后台启动
  • -e MYSQL_ROOT_PASSWORD=xxx 表示数据库的密码
  • –name 表示容器名字

连接测试:
在这里插入图片描述

遇到的问题:ERROR 1130: Host ‘192.168.1.3’ is not allowed to connect to this MySQL server 1。
解决办法:

#进入容器
 docker exec -it mysql02 /bin/bash

#启动mysql,如果直接回车可以进去就先进去,然后修改密码;如果回车进不去就输入密码MYSQL_ROOT_PASSWORD=xxx中的xxx
mysql -u root -p

#进去后,授权
use mysql;
update user set host = '%' where user = 'root';
flush privileges;

猜你喜欢

转载自blog.csdn.net/weixin_43520670/article/details/113561910