Docker数据卷以及实战MySQL

479 阅读2分钟

「这是我参与2022首次更文挑战的第六天,活动详情查看:2022首次更文挑战

再入Docker

容器数据卷

什么是容器数据卷

docker的理念回顾

将应用和环境打包成一个镜像!

容器中的数据,如果数据都在容器中,那么我们将容器删除,数据就会造成丢失。就生成一种需求——数据可以持久化。

例如:MySQL容器,其中会产生数据,容器删了,其中的数据也就莫得了,也就相当于删库跑路!所诞生需求——MySQL数据可以储存在本地。

而docker就出现一种容器之间可以实现数据共享的技术!“卷技术”!可以使Docker容器中产生的数据,可以同步到本地。也就是目录的挂载,将我们容器内的目录,挂载到Linux上面。

image-20220210201627103.png

总结一句话:容器的持久化和同步操作!容器间也是可以数据共享的!

使用数据卷

方式一:直接使用命令挂载 -v

docker run -it -v 主机目录:容器内目录
​
#启动起来的时候我们可以通过docekr inspect 容器id 来查看是否成功

image-20220210205603141.png

测试文件的同步

在容器内home文件夹内建立文件

image-20220210211456937.png

看主机中是否出现改文件出现

image-20220210211503546.png

再次测试

  1. 停止容器
  2. 在宿主机上修改文件
  3. 启动容器
  4. 容器内的数据依旧是同步的!

好处:我们以后修改只需要在本地修改即可,容器内会自动同步!

实战演练MySQL

下载MySQL镜像

docker pull mysql:5.7

运行容器需要进行数据挂载,并且安装启动MySQL,需要配置密码!!!

官方测试

docker run --name some-mysql -e MYSQL_ROOT_PASSWORD=my-secret-pw -d mysql:tag

启动MySQL

  1. -d 后台运行
  2. -p 端口暴露
  3. -v 数据卷挂载
  4. -e 环境配置
  5. --name 容器命名
docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql  -e MYSQL_ROOT_PASSWORD=123456 --name mysql01 mysql:5.7
​

启动成功后我们可以本地使用sqlyog来测试一下

sqlyod连接到服务器的3310 --- 3310和容器内的3306映射,这个时候我们就可以连接上了!

假如我们将容器删除,发现我们挂载到本地数据卷没有丢失,这就实现了容器数据持久化功能!