操作 Docker 存储卷的常用指令汇总

news2024/11/29 8:53:41

1. 什么是存储卷?

   存储卷就是将宿主机的本地文件系统中存在的某个目录直接与容器内部的文件系统上的某一目录建立绑定关系。使得可以在宿主机和容器内共享数据库内容,让容器直接访问宿主机中的内容,也可以宿主机向容器写入内容,容器和宿主机的数据读写是同步的

  存储卷可以分为三类:

  1. 管理卷:默认映射到宿主机的/var/lib/docker/volumes 目录下, 只需要在容器内指定容器的挂载点是什么,而被绑定宿主机下的那个目录,是由容器引擎 daemon 自行创建一个空的目录。
  2. 绑定数据卷:映射到宿主机指定路径下,在宿主机上的路径要人工的指定一个特定的路径。
  3. 临时数据卷:映射到于宿主机内存中,一旦容器停止运行,tmpfs、mounts 会被移除,数据就会丢失,用于高性能的临时数据存储。

2. 管理卷

   存储卷可以通过命令方式创建,也可以在创建容器的时候通过 -v and --mount 指定。

2.1 Volume 命令操作

命令功能
docker volume create创建存储卷
docker volume inspect显示存储卷详细信息
docker volume ls列出存储卷
docker volume prune清理所有无用数据卷
docker volume rm删除卷,使用中的无法删除
2.1.1 docker volume create
  • 功能:创建存储卷
docker volume create [OPTIONS] [VOLUME]
  • 参数:
    • -d:指定驱动,默认是 local
    • –label:指定元数据(标签,给卷添一些备注信息)

image.png

    通过这种方式创建出来的卷的默认的目录是/data/var/lib/docker/volumes/

image-20240213222504552

--label 是设置卷的备注信息。

image-20240213214447049

2.1.2 docker volume inspect
  • 功能:查看卷详细信息(上面的演示)
docker volume inspect VOLUME
2.1.3 docker volume ls
  • 功能:列出所有的卷
docker volume ls [OPTIONS]
  • 参数:
    • –format:指定相应个格式,如 json,table
    • -f:过滤
    • -q:仅显示名称

image-20240213220014550

2.1.4 docker volume rm
  • 功能:删除卷,需要容器不使用。
docker volume rm [OPTIONS] VOLUME [VOLUME...]
  • 参数:-f:强制删除

image-20240213221204816

2.1.5 docker volume prune
  • 功能:删除不使用的本地卷
docker volume prune [OPTIONS]
  • 参数:
    • –filter:过滤
    • -f:不提示是否删除

2.2 -v 或者–mount 指定

2.2.1 -V 参数
docker run -v name:directory[:options]
  • 参数
    • 第一个参数:卷名称
    • 第二个参数:卷映射到容器的目录
    • 第三个参数:选项,如 ro 表示 readonly(表示只读,不允许删除容器中的文件)
# 运行一个容器
docker run -d --name mynginx2 -v volnginx2:/user/share/nginx/html/ nginx:1.24.0

  运行一个容器,将容器/user/share/nginx/html/目录下的文件自动拷贝volnginx1卷上(自己创建这个卷)。

image-20240214164117096

image-20240214164801567

  • 如果删除容器中的文件,宿主机将会跟着删除。

image-20240214165059819

  为了避免上面的这种情况,就要加上 :ro 就可避免容器中的文件被删除。ro它表示只读,可以修改宿主机的文件,但是容器里的文件修改不了。

docker run -d --name mynginx2 -v volnginx2:/user/share/nginx/html/:ro nginx:1.24.0
2.2.2 --mount 参数
  • 功能:完成目录映射
--mount '<key>=<value>,<key>=<value>'
  • 参数:
    • type:类型表示 bind, volume, tmpfs
    • src:对于命名卷,这是卷的名称。对于匿名卷(名称为一串字符串),省略此字段。
    • dst,target:文件或目录挂载在容器中的路径。
    • ro,readonly:只读方式挂载。
docker run -d --name mynginx4 --mount 'src=nginxvol4,dst=/usr/share/nginx/html,ro' nginx:1.24.0

  将容器中/usr/share/nginx/html目录下的文件与nginxvol4卷相映射。

  1. 如果删除容器,卷是不会删除的,也就说宿主机中的文件会保留(这也是卷的作用)。
  2. 如果修改宿主机中的文件,容器里的文件会自动更新(前提是容器不是只读模式)。

3 绑定卷

  绑定卷跟管理卷中的 -v、––mount是一样的。

3.1 -v 参数创建卷

  • 功能:完成卷映射
docker run -v name:directory[:options]
  • 参数:
    • 第一个参数:宿主机目录,这个和管理卷是不一样的。(随着写法变动)
    • 第二个参数:卷映射到容器的目录。
    • 第三个参数:选项,如 ro 表示 readonly
# 运行并绑定
docker run -d --name mynginx6 -v /root/data:/usr/share/nginx/html nginx:1.24.0

  这时候就是将宿主机中的/root/data目录与容器中的/usr/share/nginx/html目录相绑定。这时候容器和宿主机中的初始文件都消失了(index.html)。

image-20240215104034668

  /root/data目录下没有html文件,没有拷贝过来。

# 查看详细信息
docker inspect mynginx6

image-20240215104224393

3.2 --mount 参数

  这跟 -v 是很相似的,就是将卷的名称替换为宿主机的目录,区别是一定要加上type参数,bind 表示绑定卷。

docker run -d --name myngixn7  --mount type=bind,src=/root/data,dst=/usr/share/nginx/html nginx:1.24.0

-v 与 --mount 的区别: -v 创建卷的时候,宿主机的目录可以不用存在;而 --mount 必须先创建目录再绑定,不然会报错。

4.临时卷

  临时卷数据位于内存中,在容器与宿主机之外。

4.1 指定 --tmpfs 创建

  在创建一个临时目录/test1

docker run --name mynginx8 -d --tmpfs /test1 nginx:1.24.0

  可以通过 docker inspect mynginx8 来查看。

image-20240215114732051

   /test1 在容器的目录中,但是数据是存储在内存中的。如果容器重启,那么该目录下的。

image-20240215115148428

4.2 --mount 参数

--mount '<key>=<value>,<key>=<value>'
  • 参数:
    • type:类型表示 bind, volume,tmpfs。
    • src:宿主机目录,这个和管理卷是不一样的。
    • dst,target:文件或目录挂载在容器中的路径。
    • ro,readonly:只读方式挂载。

  只需要 type 类型为 tmpfs 就行了。

docker run -d -p 80:80 --name bind1 --mount type=tmpfs,source=/root/data,target=/usr/share/nginx/html nginx:1.24.0

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/1450182.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

.NET Core WebAPI中使用Log4net记录日志

一、安装NuGet包 二、添加配置 // log4net日志builder.Logging.AddLog4Net("CfgFile/log4net.config");三、配置log4net.config文件 <?xml version"1.0" encoding"utf-8"?> <log4net><!-- Define some output appenders -->…

类加载过程介绍

一、类的生命周期 类被加载到jvm虚拟机内存开始&#xff0c;到卸载出内存为止&#xff0c;他的生命周期可以分为&#xff1a;加载->验证->准备->解析->初始化->使用->卸载。 其中验证、准备、解析统一称为链接阶段 1、加载 将类的字节码载入方法区中&#xf…

蓝桥杯第十四届电子类单片机组程序设计

目录 前言 蓝桥杯大赛历届真题&#xff08;点击查看&#xff09; 一、第十四届比赛题目 1.比赛原题 2.题目解读 1&#xff09;任务要求 2&#xff09;注意事项 二、任务实现 1.NE555读取时机的问题 1&#xff09;缩短计数时间 2&#xff09;实时读取 2.温度传感器读…

unity的重中之重:组件

检查器&#xff08;Hierarchy&#xff09;面板中的所有东西都是组件。日后多数工作都是和组件打交道&#xff0c;包括调参、自定义脚本组件。 文章目录 12 游戏的灵魂&#xff0c;脚本组件13 玩转脚本组件14 尽职的一生&#xff0c;了解组件的生命周期15 不能插队&#xff01;…

专业130+总分420+厦门大学847信号与系统考研经验厦大信息系统与通信工程,真题,大纲,参考书。

今年很幸运被厦门大学录取&#xff0c;考研专业课847信号与系统130&#xff0c;数二130&#xff0c;总分420&#xff0c;回头看这将近一年的复习&#xff0c;还是有不少经验和大家分享&#xff0c;希望对大家复习有帮助。专业课&#xff1a; 厦门大学847信号与系统在全国各高校…

BossPlayerCTF

靶场环境问题 靶场下载之后&#xff0c;可能会出现扫描不到IP的情况&#xff0c;需要进行调整&#xff0c;参考&#xff1a; Vulnhub靶机检测不到IP地址_vulnhub靶机nmap扫不到-CSDN博客 该靶机没有vim&#xff0c;需要使用vi命令去修改&#xff1b;改成当前网卡即可&#x…

推荐《架构探险:从零开始写Java Web框架》

版权声明 本文原创作者&#xff1a;谷哥的小弟作者博客地址&#xff1a;http://blog.csdn.net/lfdfhl 春节读了《架构探险&#xff1a;从零开始写Java Web框架》&#xff0c;一本大概10年前的好书。 本书的作者是阿里巴巴架构师黄勇。黄勇对分布式服务架构与大数据技术有深入…

【Linux】进程信号概念 | 核心转储 | 信号的产生

文章目录 一、信号入门1.1 生活中的信号1.2 进程角度的信号1.3 信号的概念1.4 信号的三种常见处理方式 二、信号的产生2.1 通过终端按键产生信号问题1&#xff1a;OS怎么知道键盘输入了ControlC &#xff1f;问题2&#xff1a;按CtrlC终止进程和按Ctrl\终止进程&#xff0c;有什…

多进程面试题汇总

这里写目录标题 一、多进程1、进程的定义&#xff1a;2、单核多任务CPU执行原理3、进程的优点和缺点4、创建进程15、创建进程26、进程池6.1、进程池的作用6.2、原理图6.3、使用进程池的优点 7、进程间的通信&#xff08;Queue&#xff09;7.1、需求1&#xff1a;采用多进程将10…

vue axios 请求后端无法传参问题

vue请求后端无法传参问题 问题描述处理过程总结 问题描述 在学习vue时&#xff0c;使用axios调用后端&#xff0c;发现无法把参数正确传到后端&#xff0c;现象如下&#xff1a; 使用vue发起请求&#xff0c;浏览器上已经有传参&#xff0c;但是后端没接收到对应的用户名密码&…

物流|基于Springboot的物流管理系统设计与实现(源码+数据库+文档)

物流管理系统目录 目录 基于Springboot的物流管理系统设计与实现 一、前言 二、系统功能设计 三、系统实现 1、管理员和管理员功能实现 &#xff08;1&#xff09;用户管理 &#xff08;2&#xff09;公告信息管理 &#xff08;3&#xff09;物流信息管理 &#xff08;…

希捷EXOS X 5U84存储数据恢复案例

一、案例背景 希捷EXOS X 5U84是一款高性能的企业级存储设备&#xff0c;常用于数据中心、云计算等领域。然而&#xff0c;即使使用最先进的存储设备&#xff0c;数据丢失的风险仍然存在。下面我们将介绍一起希捷EXOS X 5U84数据恢复案例。 天津某检测中心使用了希捷EXOS X 5U8…

【51单片机】利用STC-ISP软件工具【定时器计算器】配置【定时器】教程(详细图示)(AT89C52)

前言 大家好吖&#xff0c;欢迎来到 YY 滴单片机系列 &#xff0c;热烈欢迎&#xff01; 本章主要内容面向接触过单片机的老铁 主要内容含&#xff1a; 欢迎订阅 YY滴C专栏&#xff01;更多干货持续更新&#xff01;以下是传送门&#xff01; YY的《C》专栏YY的《C11》专栏YY的…

哈希切分

目录 一 二 三 2.单个子文件太大怎么办&#xff1f;&#xff08;分两种情况讨论&#xff09; 一 这样的题目典型就是KV模型的问题&#xff0c;即通过key IP找对应的value 出现次数&#xff0c;对于KV模型的问题首先想到的就是用map来统计次数&#xff0c;但是100G大小的文件…

《合成孔径雷达成像算法与实现》FIgure6.20

% rho_r c/(2*Fr)而不是rho_r c/(2*Bw) % Hsrcf exp函数里忘记乘pi了 clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; …

《合成孔径雷达成像算法与实现》Figure6.18

% rho_r c/(2*Fr)而不是rho_r c/(2*Bw) % Hsrcf exp函数里忘记乘pi了 clc clear close all参数设置 距离向参数设置 R_eta_c 20e3; % 景中心斜距 Tr 2.5e-6; % 发射脉冲时宽 Kr 20e12; % 距离向调频率 alpha_os_r 1.2; …

C++ bfs反向搜索(五十七)【第四篇】

今天我们来学习bfs的反向搜索。 1.反向搜索 反向搜索&#xff1a;是从目标状态出发进行的搜索&#xff0c;一般用于终点状态唯一&#xff0c;起点状态有多种&#xff0c;且状态转移是可逆的&#xff08;无向边&#xff09;情况。 例题&#xff1a;在一个长度为 n 的坐标轴上&a…

IDEA工程与模块管理

一、IDEA项目结构 层级关系&#xff1a; project(工程) - module(模块) - package(包) - class(类)具体的&#xff1a; 一个project中可以创建多个module一个module中可以创建多个package一个package中可以创建多个class二、Project和Module的概念 在 IntelliJ IDEA 中&…

round sphere around ground background space-around space-between space-evenly

round sphere around ground background space-around space-between space-evenly round around ground surround round sphere around ground background around surround around evenly between space-around space-between space-evenly Round: 描述形状为圆形或球形的。例…

Unity基础 -- 更新中(2.15)

Unity基础 文章目录 Unity基础3D数学 -- 基础一些方法插值运算三角函数坐标系 3D数学 -- 向量理解常用函数线性插值 3D数学 -- 四元数看向四元数计算 延迟函数协同程序 3D数学 – 基础 一些方法 float value01 Mathf.PI; // Π int value03 Mathf.Abs(-2); // 绝对值 int v…