一、docker理念回顾
docker将应用和环境打包成一个镜像
项目中我们希望数据能够持久化,即哪怕删除了容器数据也不受影响,这里就需要容器与容器间,容器与宿主机间有一个数据共享的技术。docker容器内部产生的数据能够同步至宿主机永久保存,这个就是卷技术,即是将本地目录挂载到容器内部,容器删除后不影响数据,容器运行时能直接使用已有数据。
二、挂载
方法一:启动时挂载
docker run -v 宿主机目录:容器内目录
实战测试:
1、现在宿主机root目录下创建一个文件夹test
2、使用centos镜像创建一个容器,将宿主机/root/test目录挂载到容器内/home目录
3、检查容器挂载信息,宿主机内执行:docker inspect 容器id
4、容器内/home目录下新建一个文件:text1,检查宿主机/root/test/目录下是否有该文件
5、宿主机/root/test/目录下新建一个文件:test2,减少容器/home目录下是否有该文件
6、停止容器并删除,检查宿主机内/root/test/目录下文件是否存在
方式二:dockerfile挂载
dockerfile就是用来构建docker镜像的构建文件,可以通过这个镜像生成镜像
可以看出,dockerfile文件挂载方式为:匿名挂载
三、具名挂载和匿名挂载
1、匿名挂载
-v :容器内目录
实战测试:
1、匿名挂载启动centos
docker run -it -v :/home centos
将centos的/home目录匿名挂载启动
此时发现,宿主机没有指定路径的情况下,挂载目录都是在 :/var/lib/docker/volumes/哈希值/_data/
2、具名挂载
-v 宿主机路径:容器内路径
-v 卷名:容器内路径
一般大多数情况下都是用的具名挂载方式
四、挂载时权限
-v 卷名:容器内路径:ro 容器对挂载目录只有读权限
-v 卷名:容器内路径:rw 容器对挂载目录可读可写,默认为此权限