docker data volume

数据类型

Docker 的镜像是分层设计的,底层是只读的,通过镜像启动的容器添加了一层可读写的文件系统,用户写入的数据都保存在这一层当中,如果要将写入的数据永久生效,需要将其提交为一个镜像然后通过这个镜像在启动实例,然后就会给这个启动的实例添加一层可读写的文件系统,目前 Docker 的数据类型分为两种,一是数据卷,二是数据容器,数据卷类似于挂载的一块磁盘,数据容器是将数据保存在一个容器上

什么是数据卷(data volume)

数据卷实际上就是宿主机上的目录或者是文件,可以被直接 mount 到容器当中使用

示例 启动容器并验证数据

创建 APP 目录并生成 web 页面

启动容器并验证数据

注意使用-v 参数,将宿主机目录映射到容器内部, ro 标志在容器内对该目录只读,默认是可读写的

删除容器

创建容器的时候,会生成相关的数据文件,默认不删除,但是不能删除数据卷的内容 删除容器时指定参数-v,可以删除/var/lib/docker/containers/的容器数据目录 删除所有窗口之后,容器的数据目录被 删除,但是数据卷还在,所以数据卷数据是可以持久保存的

数据卷的特点及使用

1、数据卷是目录或者文件,并且可以在多个容器之间共同使用。 2、对数据卷更改数据容器里面会立即更新。 3、数据卷的数据可以持久保存,即使删除使用使用该容器卷的容器也不影响。 4、在容器里面的写入数据不会影响到镜像本身 挂载卷仅限单机启动,局限性

文件挂载

文件挂载用于很少更改文件内容的场景,比如 nginx 的配置文件、tomcat 的配置文件等

自定义 JAVA 选项

如何一次挂载多个目录,可以指定多个-v选项

数据卷使用场景

1、日志输出 2、静态 web 页面 3、应用配置文件 4、多容器间目录或文件共享

数据卷容器

数据卷容器最大的功能是可以让数据在多个 docker 容器之间共享,即可以让B 容器访问 A 容器的内容,而容器 C 也可以访问 A 容器的内容,即先要创建一个后台运行的容器作为 Server,用于卷提供,这个卷可以为其他容器提供数据存储服务,其他使用此卷的容器作为 client 端

启动一个卷容器 Server

启动端容器 Client

简单来说就是server指定挂载的内容,后面的容器指定server容器名称,自动指向挂载路径

进入容器测试读写

关闭卷容器 Server 测试能否启动新容器

测试删除源卷容器 Server 创建容器

测试之前的容器是否正常

重新创建容器卷 Server

小结

数据卷的使用、特点、引用
在当前环境下,即使把提供卷的容器 Server 删除,已经运行的容器 Client 依然可以使用挂载的卷,因为容器是通过挂载访问数据的,但是无法创建新的卷容器客户端,但是再把卷容器 Server 创建后即可正常创建卷容器 Client,此方式可以用于线上数据库、共享数据目录等环境,因为即使数据卷容器被删除了,其他已经运行的容器依然可以挂载使用
数据卷容器可以作为共享的方式为其他容器提供文件共享,类似于 NFS 共享,可以在生产中启动一个实例挂载本地的目录,然后其他的容器分别挂载此容器的目录,即可保证各容器之间的数据一致性
Loading...