本帖最后由 妙笔生花 于 2023-8-15 06:07 编辑
docker卷的分类
-
挂载卷(Bind Mounts)
将主机上的目录或文件挂载到容器中的指定路径上。通过指定主机路径和容器路径,可以在容器和主机之间共享数据。挂载卷可以实现实时数据同步,并且对挂载卷的修改会同时反映在容器和主机上。
-
数据卷(Volumes)
这是Docker管理的容器内部的路径,用于持久化存储和共享数据。数据卷可以独立于容器存在,即使容器被删除,数据卷中的数据仍然保留。数据卷可以在多个容器之间共享数据,也可以方便地备份和恢复数据。
-
临时卷(Tmpfs Mounts)
这是将内存中的临时文件系统挂载到容器中的指定路径上。临时卷只存在于容器的生命周期内,当容器停止时,临时卷中的数据将被清除。临时卷适用于需要临时存储和处理数据的场景。
-
匿名卷(Anonymous Volumes)
这是在容器启动时自动创建的匿名卷,用于容器内部的临时数据存储。匿名卷的路径由Docker自动生成,并且在容器删除后会自动清除。匿名卷适用于临时性的数据存储需求。
docker 数据卷
数据卷 是由Docker自动管理的容器内部的路径,用于持久化存储和共享数据。数据卷可以独立于容器存在,即使容器被删除,数据卷中的数据仍然保留。数据卷可以在多个容器之间共享数据,也可以方便地备份和恢复数据。
使用docker volume create命令创建一个数据卷
docker volume create my_volume
在运行容器时使用-v 或--mount 选项来指定数据卷的路径
docker run -v my_volume:/container/path redis
# 把名为my_volume的数据卷挂载到容器中的/container/path路径上
docker 挂载卷
挂载卷 是将主机上的目录或文件挂载到容器中的指定路径上。通过指定主机路径和容器路径,可以在容器和主机之间共享数据(这意味着容器和主机之间共享同一份数据,对挂载卷的修改会同时反映在容器和主机上)。挂载卷可以实现实时数据同步,并且对挂载卷的修改会同时反映在容器和主机上。
1、宿主与容器之间通过-v 或--mount 选项映射添加容器卷
docker run -it --privileged=true -v /宿主机绝对路径目录:/容器内目录 镜像名
docker run -it --privileged=true -v /tmp/host_data:/tmp/docker_data --name=u1 ubuntu
创建一个名为u1的Ubuntu容器,以特权模式运行,并将主机的/tmp/host_data 目录挂载到容器的/tmp/docker_data 目录上。
-it : 以交互模式运行容器,并将其连接到当前终端,以便可以与容器进行交互。
--privileged=true : 在容器内部以特权模式运行,即容器内的进程将具有与主机相同的权限。这可以用于访问主机上的一些特权操作。
-v /tmp/host_data:/tmp/docker_data : 将主机的/tmp/host_data 目录挂载到容器的/tmp/docker_data 目录上。这意味着在容器中对/tmp/docker_data 目录的操作将直接反映到主机的/tmp/host_data 目录上。
2、容器卷的读写规则
ro:读和执行
docker run -it --privileged=true -v /mydocker/u:/tmp/u:ro --name=u2 ubuntu
创建一个名为u2的Ubuntu容器,在特权模式下运行,并将主机的/mydocker/u目录以只读模式挂载到容器的/tmp/u目录上。这样,容器内的进程只能读取/tmp/u目录中的文件,而不能对其进行写入或修改。
-v /mydocker/u:/tmp/u:ro : 将主机的/mydocker/u 目录以只读模式挂载到容器的/tmp/u 目录上。这意味着容器内的进程只能读取/tmp/u 目录中的文件,而不能对其进行写入或修改。
3、容器卷的继承和共享(u2继承u1,u1继承主机,一主二从)
[root@syh u]# pwd
/mydocker/u (主机)
docker run -it --privileged=true -v /mydocker/u:/tmp/u --name u1 ubuntu(u1)
docker run -it --privileged=true --volumes-from u1 --name u2 ubuntu (u2)
- --volumes-from u1: 从名为u1的容器中挂载卷到当前运行的容器中。这意味着u2容器将继承u1容器中的卷,并可以访问其中的数据。
数据卷 和 挂载卷 的区别:
- 生命周期:挂载卷的生命周期与容器相同,当容器被删除时,挂载卷也会被删除;而数据卷可以独立于容器存在,即使容器被删除,数据卷中的数据仍然保留。
- 管理方式:挂载卷需要手动指定主机上的目录或文件进行挂载;而数据卷由Docker自动管理,可以使用
docker volume create 命令创建。
- 共享性:挂载卷可以在多个容器之间共享数据,多个容器可以同时访问同一个挂载卷;而数据卷也可以在多个容器之间共享数据,多个容器可以同时访问同一个数据卷。
什么情况下用 挂载卷?数据卷?
|