容器与数据耦合的问题
1.不便于修改
2.数据不可复用
3.升级维护困难

image.png

1.数据卷作用? volume

用来实现容器与宿主机之间数据共享

2.数据卷特点

  • 数据卷可以在容器之间共享和重用
  • 对数据卷的修改会立即影响到对应容器
  • 数据卷的更新修改, 不会影响镜像
  • 数据卷默认会一直存在,即使容器被删除

3. docker操作数据卷指令

image.png
a.查看数据卷
docker volume ls

b.查看某个数据卷的细节
docker volume inspect 卷名

c.创建数据卷
docker volume create 卷名

d.删除数据卷
docker volume prune
docker volumen rm 卷名
图片.png

4.挂载数据卷操作

1.自定义数据卷目录
docker run -v 绝对路径 : 容器内路径

2.自动创建数据卷
docker run-v 卷名(随便起的自动创建):容器内路径
图片.png

数据卷挂载的方式对比

image.png

5. 示例, 创建mysql容器并挂载数据卷

提示:目录挂载与数据卷挂载的语法是类似的:

  • -v [宿主机目录]:[容器内目录]
  • -v[宿主机文件]:[容器内文件]

实现思路如下:

  1. 拉取mysql镜像, docker pull mysql:5.7
  2. 创建目录/tmp/mysql/data
  3. 创建目录/tmp/mysql/conf,将提供的hmy.cnf文件上传到/tmp/mysql/conf
  4. 去DockerHub查阅资料,创建并运行MySQL容器,要求:
    1. 挂载/tmp/mysql/data到mysql容器内数据存储目录
    2. 挂载/tmp/mysql/conf/hmy.cnf到mysql容器的配置文件
    3. 设置MySQL密码

image.png