Docker 容器数据卷
1. 是什么?
- 卷就是目录或文件,存在于一个或多个容器中,由 Docker 挂载到容器,但不属于联合文件系统,因此能够绕过 Union File System 提供一些用于持续存储或共享数据的特性。
- 卷的设计目的就是数据的持久化,完全独立于容器的生存周期,因此 Docker 不会在容器删除时删除其挂载的数据卷。
2. 用来干什么?
- 将 Docker 容器内的数据保存进宿主机的磁盘中
- 把应用与其运行的环境打包成镜像,run 后形成容器实例运行,其中产生的数据需要持久化+备份,为避免容器实例被删除后容器内的数据丢失,在 Docker 中使用卷。
3. 有什么特点?
- 数据卷可在容器之间共享或重用数据
- 数据卷中的更改可以直接实时生效
- 数据卷中的更改不会包含在镜像的更新中(数据卷的更新不会影响镜像)
- 数据卷的生命周期一直持续到没有容器使用为止
4. 宿主机与容器之间添加容器卷互通互联
-
docker run -it -v 宿主机目录:容器内目录 --privileged=true IMAGE [COMMAND] [ARG…]
-
查看数据卷是否挂载成功:docker inspect CONTAINER
-
添加读写规则映射:限制容器内部只能读取不能写
-
docker run -it -v 宿主机目录:容器内目录:ro --privileged=true IMAGE [COMMAND] [ARG…]
-
5. 卷的继承和共享
-
如 4.宿主机与容器之间添加容器卷互通互联 首张图片所示,容器 b275a4f3b452 完成了与宿主机的映射
-
创建新容器继承容器 b275a4f3b452 卷规则:docker run -it --privileged=true --volumes-from 父 CONTAINER IMAGE [COMMAND] [ARG…]