什么是容器数据卷?

docker—将应用和环境打包成一个镜像!
数据?如果数据在容器在,如果我们容器删除,数据就会丢失!需求:数据持久化
需求:数据可以存储在本地或者其他地方

容器之间可以有数据共享的技术!Docker容器产生的数据,同步到本地,—卷技术!

image.png
容器的持久化和同步操作!容器间数据也可以同步!

使用数据卷

  1. #方式一
  2. docker run -it -v 主机目录:容器目录 -p 主机端口:容器端口
  3. docker run -it -v /home/ceshi:/home -p 9091:9091

挂载信息查看

  1. docker inspect 容器id

image.png

具名挂载 匿名挂载

  1. # 匿名挂载
  2. -v 容器内路径
  3. docker run -d -P --name nginx02 -v /etc/nginx nginx
  4. # 查看所有的volumn的情况
  5. docker volumn ls
  6. #这里发现我们在-v只写了容器内的路径,没有写容器外的路径
  7. # 具名挂载
  8. doker run -d -p --name nginx03 -v juming-nginx:/etc/nginx nginx
  9. #通过 -v 卷名:容器内路径
  10. #查看这个卷
  11. docker volumn inspect 卷名

image.png
所有的docker容器内的卷,没有指定目录的情况下都是在/var/lib/docker/volumes/xxxx/_data
我们通过具名挂载可以方便我们找到一个卷,大多数情况在使用具名挂载

如何判断是具名挂载还是匿名挂载,还是指定路径挂载

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

拓展:

  1. # 通过-v 容器内路径:ro rw 改变读写权限
  2. # ro readonly #只读
  3. # rw readwrite #可读可写
  4. #一旦设置了容器权限,容器对挂载出来的内容就有限定了
  5. docker run -d -p --name nginx03 -v juming-nginx:/etx/nginxro nginx
  6. docker run -d -p --name nginx03 -v juming-nginx:/etc/nginxrw nginx
  7. # ro 只能通过宿主机来操作 ,容器内部是不能操作的

初识dockerfile

什么是dockerfile?

Dockerfile就是用来构建docker镜像的构建文件!命令脚本 !
通过脚本可以生成镜像,镜像是一层一层的

  1. #穿件一个dockerfile文件,迷茫自可以随机,建议用dockerfile
  2. # 生成镜像脚本 指令(大写) 参数
  3. FROM centos
  4. VOLUME ["volume01","volume02"]
  5. CMD echo "----end---"
  6. CMD /bin/bash

创建命令

  1. docker -build -f dockerdile文件路径 -t 自己的镜像名:版本 . #(最后一个点不可省略)

image.png

启动自己的容器

image.png
挂载的数据卷目录
这个卷一定和宿主机有对应的卷
image.png
image.png
假设构建镜像时候没有挂载卷,要手动挂载卷 -v 卷名:容器内路径

数据卷容器

两个mysql同步数据
image.png

  1. #启动三个容器
  2. #docker run -d -p --name容器名 --volumes-from 父容器 镜像名
  3. docker run -it --name qq2 --volumes-from qq1 qq/

image.png
image.png

容器数据共享命令

—volumes-from
#删除。可以删除父容器,查看其它容器共享文件是否还在
#测试 依旧可以访问
image.png
实例:多个redis mysql数据共享
image.png
总结:
容器之间配置信息的传递,数据卷容器的生命周期一直持续到没有容器使用为止
但是一旦持久化到了本地,到了这时候本地是不会被删除的;