⭕ 什么是数据卷

数据卷将要解决的问题:
数据持久化以及数据安全的问题 , 如果数据存储在容器中很容易被删除 , 就造成了数据的不安全性 .
数据卷怎么解决:
利用数据卷(卷技术) , 容器的数据可以同步到本地(宿主机) , 然后再通过本地共享到其他容器.
简单来说 , 就是目录挂载 , 将我们容器内的目录 , 挂载到Linux上面

⭕ 什么是挂载

⭕ 数据卷使用

  1. --------------------------------------
  2. # 使用[-v]命令来挂载
  3. --------------------------------------
  4. $ docker run -it -v /home/testv:/home centos /bin/bash
  5. # docker run -it [-v 宿主机目录:容器目录] [启动的容器] /bin/bash
  6. --------------------------------------
  7. # 查看是否挂载成功
  8. --------------------------------------
  9. $ docker inspect 7b4451e183ac
  10. "Mounts": [
  11. {
  12. "Type": "bind",
  13. "Source": "/home/testv",
  14. "Destination": "/home",
  15. "Mode": "",
  16. "RW": true,
  17. "Propagation": "rprivate"
  18. }
  19. ],

⭕ 测试

在容器或者宿主机上进行文件增删改查测试 , 会发现文件状态会进行同步
有点儿像双向绑定

⭕ mariaDB同步数据

  1. --------------------------------------
  2. # 拉取镜像
  3. --------------------------------------
  4. $ docker pull mariadb
  5. --------------------------------------
  6. # 创建并后台运行容器
  7. --------------------------------------
  8. $ docker run -d -p 3306:3306 -v /home/mysql/conf:/etc/mysql/conf.d -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORD=123456 --name mariadb01 mariadb
  9. # 环境配置 [-e MYSQL_ROOT_PASSWORD=自定义密码]

⭕ 匿名挂载 | 具名挂载

  1. --------------------------------------
  2. # 匿名挂载(不指定宿主机挂载目录)
  3. --------------------------------------
  4. $ docker run -d -P -v /etc/nginx nginx #匿名挂载
  5. $ docker volume ls #查看当前docker下的数据卷
  6. DRIVER VOLUME NAME
  7. local 9716215bf1388523a9fc02b7d6fe4127d79af5e0efe2d1811b21fee5fe2a90a7
  8. --------------------------------------
  9. # 具名挂载(不指定宿主机挂载目录,但是会给数据卷命名)
  10. --------------------------------------
  11. $ docker run -d -P -v nginx:/etc/nginx nginx #具名挂载
  12. $ docker volume ls #查看数据卷
  13. DRIVER VOLUME NAME
  14. local nginx
  15. $ docker volume inspect nginx #查看nginx的数据卷的详情
  16. [
  17. {
  18. "CreatedAt": "2020-11-11T16:13:36+08:00",
  19. "Driver": "local",
  20. "Labels": null,
  21. "Mountpoint": "/var/lib/docker/volumes/nginx/_data", #这个是在宿主机的地址
  22. "Name": "nginx",
  23. "Options": null,
  24. "Scope": "local"
  25. }
  26. ]
  27. $ cd /var/lib/docker/volumes
  28. $ ls
  29. 9716215bf1388523a9fc02b7d6fe4127d79af5e0efe2d1811b21fee5fe2a90a7 nginx
  30. 匿名挂载 : [-v 容器内路径]
  31. 具名挂载 : [-v 数据卷名:容器内路径]
  32. 指定路径挂载 : [-v /宿主机路径:容器内路径]
  33. 指定路径挂载(容器只有读权限) : [-v /宿主机路径:容器内路径:ro] #read only
  34. 指定路径挂载(容器有读写权限) : [-v /宿主机路径:容器内路径:rw] #read write