什么是容器数据卷?
数据可以持久化
容器之间有数据共享的技术
容器之间可以有一个数据共享的技术,Docker容器中产生的数据,同步到本地
这就是卷技术,目录的挂载,将我们的容器内地目录,挂载到linux上面
image.png

使用数据卷

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

  1. docker run -it -v 主机目录 容器目录 -p
  2. [root@iZbp1d0213clo5fn6z0fsfZ /]# docker run -it -v /home/ceshi:/home centos /bin/bash
  3. # 启动之后可以使用 docker inspect 容器id

image.png
以后修改只需要在本地修改,容器内会自动同步

  1. 实现mysql
  2. docker search mysql
  3. docker pull mysql:5.7
  4. docker run -d -p 3310:3306 -v /home/mysql/conf:/etc/mysql/conf.d
  5. -v /home/mysql/data:/var/lib/mysql -e MYSQL_ROOT_PASSWORLD=123456
  6. --name mysql01 mysql:5.7
  7. -d 后台运行
  8. -p 端口
  9. -v 数据卷挂载
  10. -e 环境配置
  11. --name

挂载到本地的数据卷,不会因为容器的删除而丢

具名和匿名挂载

匿名挂载
-v 容器目录

  1. # 查看所有的卷
  2. [root@iZbp1d0213clo5fn6z0fsfZ /]# docker volume ls
  3. # 匿名挂载
  4. local 062a116776a781376a676d92e9519f37302493556a871bc0edfedfbc661824e4
  5. -v 只写了容器内名字 没有写容器外名字

具名
[root@iZbp1d0213clo5fn6z0fsfZ /]# docker run -d -P —name nginx02 -v juming:/etc/nginx nginx
-v 后面名字前面没有加/就是具名挂载

  1. 通过 -v 卷名:容器内路径
  2. [root@iZbp1d0213clo5fn6z0fsfZ /]# docker run -d -P --name nginx02 -v juming:/etc/nginx nginx
  3. a0c259a4c97901befad4b6efb2b43a2dc2decb277931d73a7f46702c39df6a07
  4. //查看一下这个卷
  5. [root@iZbp1d0213clo5fn6z0fsfZ /]# docker volume ls
  6. DRIVER VOLUME NAME
  7. local juming
  8. // 查看具体地址
  9. [root@iZbp1d0213clo5fn6z0fsfZ /]# docker volume inspect juming

image.png
所有的docker卷,都存储在’/var/lib/docker/volumes/xxx/_data’中

  1. # 通过 -v 容器内路径: ro rw 改变读写权限
  2. ro readonly #只读
  3. rw readwrite # 可读可写
  4. 一旦设置了容器权限,容器对我们挂载出来的内容就有限定了
  5. docker run -d -P -v juming:/etc/nainx:ro nginx
  6. docker run -d -P -v juming:/etc/nainx:ro nginx

初识DockerFile

Dcikerfile就是用来构建docker镜像的构建文件

  1. # 创建dockerfile文件
  2. #文件的内容 指定(大写) 参数
  3. dockerfile
  4. FROM centos
  5. VOLUME ["volume01","volume02"]
  6. CMD echo "------end-------"
  7. CMD /bin/bash
  8. 构建镜像
  9. [root@iZbp1d0213clo5fn6z0fsfZ docker-test-volume]# docker build -f /home/docker-test-volume/dockerfile1
  10. -t ys/centos:1.0 .

image.png
image.png
这个卷和外部一定有一个同步的目录
image.png
匿名挂载
查找挂载的路径
image.png

数据卷容器

--volumes-from 父容器

  1. # 先启动一个容器
  2. docker run -it --name docker01 ys/centos:1.0
  3. #在启动另一个
  4. docker run -it --name docker02 --volumes-from docker01 ys/centos:1.0

image.png
结论
容器之间配置信息的传递,数据卷容器的声明周期一直持续到没有容器使用为止
但是一旦你持久化到本地,这个时候,本地的数据是不会删除的!