当前位置: 首页 > news >正文

Docker:数据卷挂载

Docker:数据卷挂载

  • 1. 数据卷
  • 2. 数据卷命令
      • 补充

1. 数据卷

数据卷(volume)是一个虚拟目录,是容器内目录宿主机目录之间映射的桥梁。

Nginx容器有自己独立的目录(Docker为每个镜像创建一个独立的容器,每个容器都是基于镜像创建的运行实例),如上图Nginx会有一个保存静态资源的目录/usr/share/nginx/html和保存配置文件的目录/etc/nginx/conf

我们在容器内进行修改时非常麻烦的,这时候就需要数据卷

数据卷

  • 数据卷是宿主机中的一个目录或文件
  • 当容器目录和数据卷目录绑定后,对方的修改会立即同步
  • 一个数据卷可以被多个容器同时挂载
  • 一个容器也可以被挂载多个数据卷

数据卷作用

  • 容器数据持久化
  • 外部机器和容器间接通信
  • 容器之间数据交换

数据卷所在宿主机的位置

一般都是/var/lib/docker/volumes/html/_data/var/lib/docker/volumes/conf/_data

2. 数据卷命令

  • docker volume create 创建数据卷
  • docker volume ls 查看所有数据卷
  • docker volume rm 删除指定数据卷
  • docker volume inspect 查看某个数据卷的详情
  • docker volume prune 清除数据卷

在这里插入图片描述
注意:容器与数据卷的挂载要在创建容器时配置,对于创建好的容器,是不能设置数据卷的。而且创建容器的过程中,数据卷会自动创建

演示一下nginx的html目录挂载

# 1.首先创建容器并指定数据卷,注意通过 -v 参数来指定数据卷\
docker rm -f nginx
docker run -d --name nginx -p 80:80 -v html:/usr/share/nginx/html nginx# 2.然后查看数据卷
docker volume ls
# 结果
DRIVER    VOLUME NAME
local     29524ff09715d3688eae3f99803a2796558dbd00ca584a25a4bbc193ca82459f
local     html# 3.查看数据卷详情
docker volume inspect html  这个命令可以查找卷挂载到宿主机哪个位置
# 结果
[{"CreatedAt": "2024-05-17T19:57:08+08:00","Driver": "local","Labels": null,"Mountpoint": "/var/lib/docker/volumes/html/_data","Name": "html","Options": null,"Scope": "local"}
]# 4.查看/var/lib/docker/volumes/html/_data目录
ll /var/lib/docker/volumes/html/_data
# 可以看到与nginx的html目录内容一样,结果如下:
总用量 8
-rw-r--r--. 1 root root 497 12月 28 2021 50x.html
-rw-r--r--. 1 root root 615 12月 28 2021 index.html# 5.进入该目录,并随意修改index.html内容
cd /var/lib/docker/volumes/html/_data
vi index.html# 6.打开页面,查看效果# 7.进入容器内部,查看/usr/share/nginx/html目录内的文件是否变化
docker exec -it nginx bash

在这里插入图片描述

在这里插入图片描述

在这里插入图片描述

查看宿主机与镜像绑定的内容
在这里插入图片描述
在这里插入图片描述


更改宿主机的html文件,容器也会跟着修改

在这里插入图片描述
在这里插入图片描述

在这里插入图片描述

补充

docker rm -f 命令用于强制删除一个或多个正在运行的Docker容器。下面解释一下这个命令的作用:

  • docker rm:这个部分表示删除容器的命令。
  • -f:这个选项表示强制删除容器,即使容器正在运行或有其他相关的资源被引用。

通常,如果要删除一个正在运行的容器,Docker会在容器停止后才允许删除。但是,如果您使用-f选项,Docker将强制停止正在运行的容器,并立即删除它。

当您使用docker rm -f命令时,Docker会立即停止并删除指定的容器。这对于需要快速清理容器或处理某些问题的情况非常有用。但是要注意,这可能会导致数据丢失,因此谨慎使用该命令。


docker rmi nginx:latest命令用于从本地Docker镜像中删除指定的镜像。下面解释一下这个命令的作用:

  • docker rmi:这个部分表示删除镜像的命令。
  • nginx:latest:这个是要删除的镜像的名称和标签。在这个示例中,nginx是镜像的名称,latest是标签。

运行这个命令后,Docker将会尝试删除本地存储中的nginx:latest镜像。如果该镜像没有被其他容器所使用,并且没有其他标签与之关联,那么该镜像将被成功删除。

请注意,一旦您删除了一个镜像,将无法再使用该镜像来创建新的容器实例。如果在删除之前没有备份或推送该镜像到远程仓库,那么该镜像将无法恢复。因此,在执行docker rmi命令之前,请确保您不再需要该镜像或已经有其他适当的备份和操作。

如果您想要删除具有多个标签的镜像,您可以使用相同的docker rmi命令,并列出要删除的所有标签。例如:docker rmi nginx:latest nginx:1.18将同时删除nginx:latestnginx:1.18两个镜像。

http://www.lryc.cn/news/211014.html

相关文章:

  • 你会处理 go 中的 nil 吗
  • 高级深入--day42
  • mysql 计算两个坐标距离
  • String、StringBuffer、StringBuilder和StringJoiner
  • 【数据结构】插入排序
  • Photoshop使用笔记总目录
  • 最近面试遇到的高频面试题
  • 负载均衡有哪些算法,分别在nginx中如何配置?
  • Starknet开发工具
  • Unity地面交互效果——1、局部UV采样和混合轨迹
  • 基于STM32的示波器信号发生器设计
  • 案例分析大汇总
  • MVCC(Multi-Version Concurrency Control,多版本并发控制)
  • 嵌入式面试2(c相关)
  • 基于SSM的n省出口基地公共信息服务平台设计与实现
  • opencv dnn模块 示例(20) 目标检测 object_detection 之 yolor
  • 【队列的顺序表示,链式表示】
  • Pydantic 实践
  • 获取pandas中的众数
  • SOLIDWORKS Simulation2024仿真10大新功能
  • Java程序设计2023-第二次上机练习
  • 如何在 uniapp 里面使用 pinia 数据持久化 (pinia-plugin-persistedstate)
  • 智慧矿山AI算法助力护帮板支护监测,提升安全与效率
  • shell中的运算
  • 【Java 进阶篇】解决Java Web应用中请求参数中文乱码问题
  • 51单片机-点阵屏led
  • Angular-03:组件模板
  • mysql 操作慢查询日志
  • illuminate/database 使用 二
  • 二叉树的概念