数据?如果数据都在容器中,你们我们容器删除,数据就会丢失!(需求:数据可以持久化)
容器之间可以有一个数据共享的技术!docker容器中产生的数据,同步到本地!
这就是卷技术!目录挂载,将我们容器内的目录,挂载到Linux上面!
总结一句话,容器的持久化和同步操作!容器也是可以数据共享的

  1. #方式一:直接使用命令来挂载 -v
  2. docker run -it -v /home/ceshi:/home centos /bin/bash
  3. #这样就将本地的/home/ceshi文件目录映射到了容器中的/home目录下从而达到数据共享

具名和匿名挂载

  1. #匿名挂载
  2. -v 容器内路径!
  3. docker run -d -P --name nginx01 -v /etc/nginx nginx
  4. #查看所有 volume(卷)的情况
  5. docker volume ls
  6. [root@iZbp10cl07degikl645xkmZ ~]# docker volume ls
  7. DRIVER VOLUME NAME
  8. local 0d60d42667bb0ec6c714eb727bdad78622cde89145eabbee5e6f96d982f8edaf
  9. #这里发现,这种就是匿名挂载,我们-v只写了容器内的路径,没有写容器外的路径!
  10. #具名挂载
  11. [root@iZbp10cl07degikl645xkmZ ~]# docker run -d -P --name nginx02 -v juming:/etc/nginx nginx
  12. 1a353011db9cb0abed3bfb85d4dd8fa4edc4fbc32bd3399d4d937f6dfe925105
  13. [root@iZbp10cl07degikl645xkmZ ~]# docker volume ls
  14. local faa560fb675fea2638d16ffc4e4a55ede58834744fd98f9a8ff94819aef3c34c
  15. local juming
  16. #通过-v 卷名:容器内路径
  17. #查看一下这个卷
  18. [root@iZbp10cl07degikl645xkmZ ~]# docker volume inspect juming
  19. [
  20. {
  21. "CreatedAt": "2020-11-25T19:50:08+08:00",
  22. "Driver": "local",
  23. "Labels": null,
  24. "Mountpoint": "/var/lib/docker/volumes/juming/_data", //具体本地的地址
  25. "Name": "juming",
  26. "Options": null,
  27. "Scope": "local"
  28. }
  29. ]
  30. [root@iZbp10cl07degikl645xkmZ ~]#

总结:我们通过具名挂载可以方便的找到我们的一个卷,大多数情况在使用的** 具名挂载 **
///

  1. #如何确定具名挂载还是匿名挂载,还是指定路径挂载!
  2. -v 容器内路径 #匿名挂载
  3. -v 卷名:容器内路径 #具名挂载
  4. -v /宿主机路径:容器路径 #指定路径挂载

拓展:

  1. # 通过 -v 容器内路径, ro rw 改变读写权限
  2. ro readonly # 只读
  3. rw readwrite # 可读可写
  4. # 一旦这个设置了容器权限,容器对我们挂载出来的内容就有了限定!
  5. docker run -d -P --name nginx02 -v juming:/etc/nginx:ro nginx # 这样的话只能从juming所映射的路径去改写而不能在容器中去改写
  6. docker run -d -P --name nginx02 -v juming:/etc/nginx:rw nginx # 既可以从juming映射的那个路径改写也可以在容器中改写
  7. 看到ro的话说明只能通过宿主机来改写而不能在容器中改写