首页 > 其他分享 >【Docker】数据卷(容器数据管理)

【Docker】数据卷(容器数据管理)

时间:2024-11-23 22:30:12浏览次数:4  
标签:容器 宿主机 html 目录 数据管理 Docker 数据 docker

文章目录

一、前言

在之前的nginx案例中,修改nginx的html页面时,需要进入nginx内部。并且因为没有编辑器,修改文件也很麻烦。

这就是因为容器与数据(容器内文件)耦合带来的后果。

image-20210731172440275

要解决这个问题,必须将数据与容器解耦,这就要用到数据卷了。


二、数据卷

**数据卷(volume)**是一个虚拟目录,指向宿主机文件系统中的某个真实目录。

假设这里有个docker的主机,在这个主机上就会由docker去管理很多数据卷,所有的数据卷一定会指向宿主机文件系统中的一个目录 /var/lib/docker/volumes

作用:将容器与数据分离,解耦合,提高数据的复用性,方便操作容器内数据,保证数据安全

比如说我现在利用docker创建了一个新的数据券,这个数据券的名字叫:html,那么docker一定会在这个指定的宿主机文件系统下创建出html目录。当再次创建一个新的数据卷时,它同样会在volumes(卷)目录下再创建一个真实目录,每一个数据卷都会跟一个真实的目录进行映射。

所以你可以认为:数据券它是一个虚拟的,并不真实,它只是一个概念;而真正指向的是硬盘上的真实的文件夹。

当我们的Container(容器)在创建之后,它就可以使用数据卷。比方说,我们现在有一个nginx容器,nginx的html目录是在 /usr/share/nginx/html ,这是容器内的目录,将来如果我们放任不管,nginx所有html文件、静态文件都会创建到这个目录下,所有配置都会放到 /etc/nginx/conf 目录下,这时就是数据与容器耦合了。

现在我们可以让nginx的内部目录与数据卷进行关联,当它与数据卷进行关联时,它的本质是在跟宿主机文件系统上的目录进行关联。这个时候,docker就会去管理这个容器了。比如说我在这个nginx容器的html目录里写了点东西,这些东西会立即写到宿主机的文件系统里。而反过来,如果说我在宿主机文件系统里,对html文件夹里面的某一个文件进行了修改,这个修改也会立即反映到容器内的这样一个目录里面去。这就可以说,宿主机文件系统和Container通过html数据卷建立起了联系。

image-20210731173541846

一旦完成数据卷挂载,对容器的一切操作都会作用在数据卷对应的宿主机目录了。

这样,我们操作宿主机的/var/lib/docker/volumes/html目录,就等于操作容器内的/usr/share/nginx/html目录了

那么我们之前的问题由此就解决了

  1. 修改不方便:现在对宿主机文件系统的html目录下的任意修改,一定会反映到跟这个对应数据卷关联的容器内部,再也不需要进入容器内部修改了。
  2. 数据共享:只需要让第二个nginx容器的config目录也来挂载config数据卷,也就是说两个容器可以挂在同一个卷上,也就是说,原来在conf做的一切修改,在新的容器里也能看见。
  3. 数据安全 / 删除:删除没关系,因为容器删了,但是数据卷不会跟着删,数据卷是挂载在容器的目录上,将来来了新版本的容器,只需要接着挂载到这个数据卷上,这样就可以共享以前旧的数据了。

三、数据卷(volume)操作命令

数据卷操作是一个二级命令,第一级是 docker volume ,接下来才是真正的命令

数据卷操作的基本语法如下:

docker volume [COMMAND]

docker volume命令是数据卷操作,根据命令后跟随的command来确定下一步的操作:

  • create 数据卷名称:创建一个volume
  • inspect 数据卷名称(其中volume可以省略):查看一个或多个数据卷详细信息,包括关联的宿主机目录位置
  • ls:列出所有的volume
  • prune:删除所有未使用的数据卷
  • rm 数据卷名称:删除一个或多个指定的volume

四、案例:创建和查看数据卷

需求:创建一个数据卷,并查看数据卷在宿主机的目录位置

首先通过 docker volume --help 来查看帮助文档

① 创建数据卷,后面跟上数据卷的名称

以下就是创建了一个名为html的数据卷

docker volume create html

② 查看所有数据卷

docker volume ls

结果:

image-20240321203119300

③ 查看数据卷详细信息卷

docker volume inspect html

特别需要关注的就是它的挂载点:我们创建的 html 这个数据卷关联的宿主机目录为/var/lib/docker/volumes/html/_data ,多了一个 _data,这里面是真实存储的。

image-20210731173809877

④ 删除所有未使用的数据卷

docker volume prune 

标签:容器,宿主机,html,目录,数据管理,Docker,数据,docker
From: https://blog.csdn.net/qq_39921135/article/details/143970589

相关文章

  • Docker 理论与实操指南
    1.简介Docker是一个开源的应用容器引擎,可以让开发者打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux机器上,也可以实现虚拟化。Docker的官方地址是https://docs.docker.com/。无论是应用开发者、运维人员、还是其他信息技术从业人员,都有必要......
  • docker 存储卷实验
    需求:创建1个myvolume1的空卷,将其挂载给web1的容器,挂载目录/usr/local/apache2/htdocs运行两个web2web3的容器,更新web2中容器内容为Thisisatest!通过宿主机访问web3查看输出内容。dockervolumecreatemyvolume1dockerrun-d--nameweb2-p82:80-vmyvolume1:/usr/l......
  • 『玩转Streamlit』--布局与容器组件
    在Streamlit中,布局类组件扮演着至关重要的角色。它们不仅决定了应用程序的视觉呈现和用户体验,也极大地增强了页面内容的组织性和可读性。通过这些组件,开发者可以灵活地划分页面空间,创建出清晰、有条理的布局结构。本篇主要介绍3种构建StreamlitApp时常用的3种布局类组件:st.c......
  • docker搭建私有的仓库
    docker搭建私有仓库一、为什么要搭建私有的仓库?因为在国内,访问:https://hub.docker.com/会出现无法访问页面。。。。(已经使用了魔法)当然现在也有一些国内的镜像管理网站,比如网易云镜像服务、DaoCloud镜像服务、阿里云镜像服务等。但是有些收费的。戛然而止了。我们可以自......
  • 本地Docker部署开源可视化实时监控工具Netdata并实现远程监测系统性能数据
    文章目录前言1.关于Netdata2.本地部署Netdata3.使用Netdata4.cpolar内网穿透工具安装5.创建远程连接公网地址6.固定Netdata公网地址前言本文主要介绍如何在LinuxUbuntu系统使用Docker本地部署Netdata,并结合cpolar内网穿透工具实现远程访问本地服务器上的Netdata,轻......
  • docker命令
    文章目录docker操作命令1.帮助命令2.操作镜像相关3.操作容器命令4.查看容器日志相关5.查看镜像的元信息6.进入正在运行的容器7.拷贝文件相关docker操作命令1.帮助命令dockerversion#显示docker的版本信息。dockerinfo#显示docker的系统信息,包......
  • CentOS Docker 安装
    参考地址:https://www.runoob.com/docker/centos-docker-install.html CentOSDocker安装Docker支持以下的64位CentOS版本:CentOS7CentOS8更高版本...使用官方安装脚本自动安装安装命令如下:curl-fsSLhttps://get.docker.com|bash-sdocker--mirrorAliyu......
  • 【Python各类容器】
    目录1.列表(可变类型)1.1列表的定义1.2 列表的下标索引1.3 列表的增删改查1.4 列表的遍历2元组(不可变类型)2.1元组的定义2.2 元组的下标索引2.3元组的查2.4元组的遍历3 字符串(不可变类型)3.1 字符串的定义3.2字符串的下标索引3.3 字符串的查3.4字符串......
  • Docker 实践与应用举例:提升开发与运维效率的利器
    Docker是一个开源的容器化平台,用于自动化部署、扩展和管理应用程序。它通过将应用及其依赖打包成容器,能够使得开发、测试、部署和生产环境中的应用一致性得以保证。在本文中,我们将深入探讨Docker的基础知识、安装与配置,结合实际案例展示Docker在开发和运维中的强大应用。......
  • 3. 使用Docker部署MQTT平台mosquitto到云服务器
    3.使用Docker部署MQTT平台mosquitto到云服务器1.拉取MosquittoDocker镜像(这里选择拉取1.6.14版本,因为最新版本报错Addressnotavailable)dockerpulleclipse-mosquitto#或者拉取1.6.14版本dockerpulleclipse-mosquitto:1.6.142.创建mosquitto配置文件在运......