【Docker】Linux中Docker数据管理的数据卷及挂载

这篇具有很好参考价值的文章主要介绍了【Docker】Linux中Docker数据管理的数据卷及挂载。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

目录

一、数据管理

1. 讲述

2. 应用场景

二、数据卷的应用

1. 命令

2. tomcat镜像

3. 挂载数据卷

4. 项目部署在数据卷

三、目录挂载

四、完善Tomcat配置

每篇一获


一、数据管理

1. 讲述

Docker 的数据管理主要涉及到两个方面:数据卷(Volumes)绑定挂载(Bind Mounts)

  1. 数据卷(Volumes):数据卷是 Docker 提供的一种数据管理方式,它在 Docker 主机上创建一个特殊的目录,可以直接由容器访问。数据卷的主要优点是数据的持久性和数据共享。即使容器被删除,数据卷中的数据也不会丢失,可以被其他容器使用。

    创建数据卷的命令是 docker volume create,使用数据卷的命令是 docker run -v volume-name:/path/in/container

  2. 绑定挂载(Bind Mounts):绑定挂载允许您将 Docker 主机上的任何目录挂载到容器中。这种方式的优点是数据的实时性,任何在主机上对这个目录的修改都会立即反映到容器中。

    使用绑定挂载的命令是 docker run -v /path/on/host:/path/in/container

请注意,数据卷和绑定挂载都可以在 docker run 命令中使用 -v 或 --volume 选项来指定。但是,数据卷和绑定挂载的语法有所不同,数据卷使用的是 volume-name:/path/in/container,而绑定挂载使用的是 /path/on/host:/path/in/container

2. 应用场景

数据卷(Volumes)

  1. 数据持久化:数据卷可以在容器之间或者在容器重启后保持数据的持久化。即使容器被删除,数据卷中的数据也不会丢失。

  2. 数据共享:数据卷可以被多个容器同时挂载,实现容器间的数据共享。这对于需要多个容器共享数据的场景非常有用。

  3. 备份、恢复和迁移:数据卷可以方便地进行备份和恢复,也可以用于容器的数据迁移。

  4. 性能优化:数据卷的性能通常优于绑定挂载,因为数据卷跳过了主机文件系统的一些用户空间和权限检查。

  5. 与 Docker 插件集成:数据卷可以与 Docker 插件集成,实现更多的功能,比如数据加密、数据复制等。

绑定挂载(Bind Mounts)

  1. 分布式文件系统:在分布式系统中,多个计算机节点可以通过绑定挂载将共享的文件系统挂载到本地目录上,实现文件的共享和访问。这样可以方便地在不同节点之间共享数据和资源。
  2. 数据存储和备份:绑定挂载可以将外部存储设备(如硬盘、网络存储等)挂载到计算机的文件系统中,实现数据的存储和备份。这样可以方便地扩展存储容量,同时也可以提高数据的可靠性和可用性。
  3. 虚拟化环境:在虚拟化环境中,绑定挂载可以将虚拟机的磁盘镜像挂载到宿主机的文件系统中,实现虚拟机的启动和管理。这样可以方便地管理和迁移虚拟机,同时也可以提高虚拟机的性能和可靠性。
  4. 容器化应用:在容器化应用中,绑定挂载可以将宿主机的目录挂载到容器中,实现容器和宿主机之间的数据共享。这样可以方便地在容器中访问宿主机的文件和目录,同时也可以提高容器的性能和可靠性。

总的来说,绑定挂载和数据卷都可以实现数据的持久化和共享,但它们适用的场景略有不同。绑定挂载更适合需要在主机和容器之间共享特定文件或目录的场景,而数据卷更适合需要在容器之间共享数据,或者需要数据持久化的场景。

二、数据卷的应用

为了很好的实现数据保存和数据共享,Docker提出了Volume这个概念,简单的说就是绕过默认的联合 文件系统,而以正常的文件或者目录的形式存在于宿主机上。又被称作数据卷。

数据卷 是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性:

  • 数据卷 可以在容器之间共享和重用
  • 对 数据卷 的修改会立马生效
  • 对 数据卷 的更新,不会影响镜像
  • 数据卷 默认会一直存在,即使容器被删除

1. 命令

创建数据卷

docker volume create v1 (v1是名称,可以自己修改)

查看所有数据卷

docker volume ls     

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器 

查看数据卷信息

docker volume inspect v1  (v1是名称,根据名称查看)

删除一个volume

docker volume rm v1    (v1是名称,根据名称删除

数据卷 是被设计用来持久化数据的,它的生命周期独立于容器,Docker不会在容器被删除后自动 删除数据卷,并且也不存在垃圾回收这样的机制来处理没有任何容器引用的数据卷,无主的数据卷 可能会占据很多空间,所以要及时删除.

2. tomcat镜像

开放端口

虚拟机的端口没有开发端口需要先开发端口,如何虚拟机的端口已经开放,就可以直接安装并创建tomcat镜像及容器

开放端口命令 :firewall-cmd --zone=public --add-port=8080/tcp --permanent  (开放8080

 之后更新端口:firewall-cmd --reload  

查看已开放的端口:firewall-cmd --zone=public --list-ports

 安装并创建

命令: docker run -itd  --name t1  -p 8080:8080   tomcat:8.5.20      

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

其中  t1 是tomcat容器的名称(可以自己修改),前面的8080为主机端口(主机端口可以自己修改),后面的8080为虚拟机端口(尽量不用修改),tomcat:8.5.20中的8.5.20Tomcat的版本。如果命令中没有 :8.5.20,后面只带 tomcat,就会默认为最新的版本

之后就可以在自己的主机(自己的电脑)上的浏览器,通过访问虚拟机ip访问到tomcat。

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

3. 挂载数据卷

实现共享

数据卷中的数据是共享的,先挂载一个数据卷并且创建一个容器,容器名称为 c1。

命令: docker run -it   --name c1  --mount source=v1,target=/testdir  centos

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

在创建一个容器并且挂载相同的数据卷,容器名称为 c2 

命令: docker run -it   --name c2  --mount source=v1,target=/testdir  centos

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器 

命令中 --name 后面的c1和c2,是容器名称可以自己修改,source=v1中的v1是挂载的数据卷名称,/testdir 是创建容器后创建这个路径来共享数据资源。

在c1容器中,创建一个文件,命令:touch a.txt

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

之后,进入文件,在c2容器中的共享文件中可以看到,c1容器中创建的文件

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

删除容器,数据依然在

查看容器的信息:docker inspect v1   (v1容器名称)

找到容器存放数据的路径,并且查看在数据卷中的数据。

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

输入命令:exit (退出容器)

输入命令删除所有容器:docker rm -f $(docker ps -aq)   

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

 删除之后,再查看其中的数据依然还在,不会随着容器的删除而删除。

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器


4. 项目部署在数据卷

复制数据卷的路径,在左边路径窗口中窗口到跟目录,将本机的war包拖进去。

/var/lib/docker/volumes/v1/_data

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

获取到tomcat的webapps文件的全路径,如:/usr/local/tomcat/webapps,进入tomcat中可以用命令:pwd  获取当前的跟路径。

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

将数据卷中的项目挂载到tomcat的webapps文件中,并且启动tomcat。

命令 : 

docker run -itd  \
--name t1   \
-p 8080:8080  \
--mount source=v1,target=/usr/local/tomcat/webapps   \
tomcat:8.5.20

t1 是容器名称,target后面的路径是将项目挂载到tomcat中。

之后,在本机访问,虚拟机的IP加项目路径即可访问项目:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

三、目录挂载

使用目录挂载,将目录中的文件挂载

在虚拟机跟目录下创建一个文件夹:mkdir soft      (名称soft,可以自己修改)

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

将项目的war包拖入到该文件夹中:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

方法一: 

输入命令 : 

docker run -itd  \
--name t1  \
-p  8080:8080   \
-v  /soft:/usr/local/tomcat/webapps  \
tomcat:8.5.20

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器 

其中的 t1  为容器名称,/soft为虚拟机的路径中的文件,而将这些文件挂载到tomcat的/usr/local/tomcat/webapps路径中,并且启动运行

在主机访问:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

方法二:

在文件夹中指定文件挂载,并且指定挂载后的文件名称,输入命令 :

 

docker run -itd  \
--name t1  \
-p  8080:8080   \
-v  /soft/oapro.war:/usr/local/tomcat/webapps/oapro.war  \
tomcat:8.5.20

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器 

其中的 t1  为容器名称,/soft/oapro.war为虚拟机的路径中的文件中指定的挂载文件,而将这个文件挂载到tomcat的/usr/local/tomcat/webapps路径中指定名称为oapro.war,并且启动运行

在主机访问:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

四、完善Tomcat配置

将本地的tomcat,找到/conf/tomcat-users.xml,的tomcat-users.xml文件,复制到桌面进行修改该文件,如图:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

修改如下:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器 

<role rolename="manager-gui"/>
<user username="tomcat" password="123456" roles="manager-gui"/> 


 将本地的tomcat,找到/webapps/manager/META-INF/context.xml,的context.xml文件,复制到桌面进行修改该文件,如图:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

修改如下:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

之后将这两个文件拖到虚拟机中

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

之后输入命令:

docker run -itd \
--name t1 \
-v /soft/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml \
-v /soft/context.xml:/usr/local/tomcat/webapps/manager/META-INF/context.xml \
-p 8080:8080 \
tomcat:8.5.20

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器 

之后主机访问如图:

【Docker】Linux中Docker数据管理的数据卷及挂载,docker,linux,容器

每篇一获

学习在Linux中使用Docker的数据管理技术可以带来以下收获:

      1. 数据隔离和持久化:Docker提供了多种数据管理技术,如数据卷(Volumes)、绑定挂载(Bind Mounts)和临时文件系统(Tmpfs),可以实现数据的隔离和持久化。通过使用这些技术,您可以将数据与容器分离,使得容器的生命周期与数据的生命周期独立,方便数据的管理和迁移。

       2. 数据共享和共享卷:Docker的数据管理技术可以实现容器之间的数据共享。通过创建共享卷(Shared Volumes),多个容器可以访问和共享同一份数据,方便实现容器之间的通信和协作。

      3. 数据备份和恢复:使用Docker的数据管理技术,您可以方便地对容器中的数据进行备份和恢复。通过创建数据卷或使用绑定挂载,您可以将容器中的数据保存到外部存储设备中,以便在需要时进行恢复。

      4. 数据迁移和部署:Docker的数据管理技术可以帮助您实现容器的数据迁移和部署。通过将数据卷或绑定挂载与容器分离,您可以方便地将容器和数据分别部署到不同的环境中,实现快速的应用部署和迁移。

总的来说,学习在Linux中使用Docker的数据管理技术可以提高数据的管理效率和灵活性,同时也方便了容器的部署和迁移。这些技术可以帮助您更好地利用Docker来构建和管理应用程序。文章来源地址https://www.toymoban.com/news/detail-809582.html

到了这里,关于【Docker】Linux中Docker数据管理的数据卷及挂载的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包赞助服务器费用

相关文章

  • Linux系统Docker部署DbGate并结合内网穿透实现公网管理本地数据库

    Linux系统Docker部署DbGate并结合内网穿透实现公网管理本地数据库

    🌈个人主页: Aileen_0v0 🔥热门专栏: 华为鸿蒙系统学习|计算机网络|数据结构与算法|MySQL| ​ 💫个人格言:“没有罗马,那就自己创造罗马~” 前些天发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。点击👉跳转到网站。 本文主要介绍如何在

    2024年03月11日
    浏览(22)
  • 【 Linux命令行与Shell脚本编程】第四章 进程管理 ,磁盘统计信息,挂载新磁盘,数据排序,数据归档

    【 Linux命令行与Shell脚本编程】第四章 进程管理 ,磁盘统计信息,挂载新磁盘,数据排序,数据归档

    第四章 更多命令 进程管理 磁盘统计信息 挂载新磁盘 数据排序 数据归档 4.1,监测程序 4.1.1,ps 探查进程 4.1.2,top 实时监测进程 4.1.3,kill pkill 结束进程 1,kill 命令 2,pkill 命令 4.2,检测磁盘空间 4.2.1,mount umount挂载存储设备 1. mount 命令 其他选项 2,umount 命令 4.2.2, df 命令 4.2.3, du 命令

    2023年04月24日
    浏览(10)
  • 【Docker】Docker的数据管理

    【Docker】Docker的数据管理

    管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数据在宿主机与容

    2024年02月16日
    浏览(14)
  • 【Docker】Docker学习⑤ - Docker数据管理

    参考:【Docker】Dokcer学习① - 简介 参考:【Docker】Docker学习② - Docker安装及基础命令介绍 参考:【Docker】Docker学习③ - Docker镜像管理 参考:【Docker】Docker学习④ - Docker镜像与制作 如果运行中的容器修改如果生成了新的数据或者修改了现有的一个已经存在的文件内容,那么新

    2024年01月23日
    浏览(17)
  • docker数据管理操作

    docker数据管理操作

    主要有两种: 数据卷 数据卷容器 在 Docker 中,数据管理是非常重要的,因为容器本身是临时的,当容器停止或删除时,容器内部的数据也会丢失。为了持久化数据并方便数据共享和重用,Docker 提供了两种主要的数据管理方式:数据卷(Volumes)和数据卷容器(Volume Containers)

    2024年04月13日
    浏览(13)
  • Docker 数据管理

    Docker 数据管理

    1.数据卷 案例展示 2.数据卷容器 案例展示 1.概念 2.操作 1.基于现有镜像创建 2.基于本地模板创建 3.基于Dockerfile 创建 ①联合文件系统(UnionFS) ②镜像加载原理 ③Dockerfile 操作常用的指令 4.dockerfile编写步骤 dockerfile编写案例

    2024年02月16日
    浏览(11)
  • Docker(六)数据管理

    Docker(六)数据管理

    作者主页: 正函数的个人主页 文章收录专栏: Docker 欢迎大家点赞 👍 收藏 ⭐ 加关注哦! 这一章介绍如何在 Docker 内部以及容器之间管理数据,在容器中管理数据主要有两种方式: 数据卷(Volumes) 挂载主机目录 (Bind mounts) 数据卷 是一个可供一个或多个容器使用的特殊目录

    2024年01月21日
    浏览(14)
  • Docker 的数据管理

    绪论 管理 Docker 容器中数据主要有两种方式:数据卷(Data Volumes)和数据卷容器(DataVolumes Containers)。 1.数据卷 数据卷是一个供容器使用的特殊目录,位于容器中。可将宿主机的目录挂载到数据卷上,对数据卷的修改操作立刻可见,并且更新数据不会影响镜像,从而实现数

    2024年02月07日
    浏览(12)
  • Docker数据卷和数据管理

    Docker 容器的数据放哪里呢? 本文带你理解如何在 Docker 内部以及容器之间管理数据。 数据卷(Data Volume) 数据卷的使用,类似于 Linux 下对目录或文件进行 mount 数据卷(Data Volume)是一个可供一个或多个容器使用的特殊目录,它绕过 UFS,可以提供很多有用的特性: 数据卷可以在容

    2024年01月16日
    浏览(13)
  • Docker基本管理与网络以及数据管理

    Docker基本管理与网络以及数据管理

    Docker是一个go语言开发的应用容器引擎,运行容器里的应用。docker是用来管理容器和镜像的一种工具。 容器是在linux上本机运行,并与其他容器共享主机的内核,它运行的是一个独立的进程,不占用其他任何可执行文件的内存,非常轻量。 虚拟机运行的是一个完整的操作系统

    2024年02月07日
    浏览(10)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包