什么是容器数据卷

如果数据都在容器中,那么我们删除容器,数据也会丢失。 总结:容器的持久化和同步操作,容器间也是可以数据共享的。
image.png

使用数据卷

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

  1. docker run -it -v 主机目录:容器目录
  2. [root@lxt ~]# docker run -it -v /home/test:/home centos /bin/bash

可通过docker inspect 容器id 验证
image.png
Source:主机地址
Destination:docker容器内的地址

测试文件的同步(关闭了容器也会同步,除了删除容器)
image.png

匿名挂载和具名挂载

  1. 匿名(只写容器内的路径,没有写容器外的路径!)
  2. docker run -d -P --name nginx01 -v /etc/nginx nginx
  3. 查看所有的volume的情况
  4. docker volume ls
  5. 具名
  6. docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx nginx

所有的docker容器内的卷, 没有指定目录的情况下都是在:/var/lib/docker/volumes/xxxx/_data

拓展:

  1. docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:ro nginx
  2. docker run -d -P --name nginx02 -v juming-nginx:/etc/nginx:rw nginx
  3. # ro 只要看到ro就说明这个路径只能通过宿主机来操作,容器内部是无法操作!

方式二:Dockerfile

  1. FROM centos
  2. VOLUME ["volume01","volume02"] #匿名挂载
  3. CMD echo "----end----"
  4. CMD /bin/bash

第二行代码会在镜像中生成两个文件夹volume1,volume2,这两个文件夹就是生成镜像的时候自动挂载的数据卷目录,宿主机在默认位置也会有文件夹与之对应。

构建代码

  1. docker build -f /home/xxxxxx/dockerfile1 -t lxt/centos:1.0 .

数据卷容器

多个容器之间共享数据
image.png
并不是容器中的所有文件都共享,只是被挂载的文件才能实现共享。删除centos1容器后,centos2的文件并不会删除,删除centos1容器中的文件才会使得centos2的文件删除。