【Docker】数据卷挂载以及宿主机目录挂载的使用

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

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

🎉🎉欢迎来到我的CSDN主页!🎉🎉

🏅我是Java方文山,一个在CSDN分享笔记的博主。📚📚

🌟推荐给大家我的专栏《Docker实战》。🎯🎯

👉点击这里,就可以查看我的主页啦!👇👇

Java方文山的个人主页

🎁如果感觉还不错的话请给我点赞吧!🎁🎁

💖期待你的加入,一起学习,一起进步!💖💖

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

目录

✨前言

一、数据卷挂载

1.数据卷是什么

2.数据卷的基本使用

创建数据卷

查看所有数据卷

查看数据卷信息

 删除一个volume

挂载数据卷

查看是否挂载成功

二、宿主机目录挂载

1.什么是目录挂载

2.目录挂载的基本使用

挂载目录

三、案例(实现Tomcat在线部署)


 

✨前言

假设我们有一个容器化的机器学习模型训练应用程序。该应用程序需要大量的训练数据来进行模型的训练,而这些训练数据可能会占据大量的存储空间。如果我们将训练数据直接放在容器内部,会导致容器的镜像体积增大,每次创建或启动容器都需要复制整个数据集,这将消耗大量的时间和存储资源,而且容器被删除了不可逆,那么就会导致数据丢失非常的不方便。

当使用数据卷挂载和宿主机目录挂载时:

  1. 数据库存储:在容器化的应用程序中,数据库通常需要持久化存储数据。通过将数据库的数据卷挂载到容器中,可以确保数据在容器重启或更新时不会丢失。这样,即使容器被销毁,数据仍然可以在其他容器中使用。数据卷挂载还可以用于容器之间共享数据库的备份文件。

  2. Web服务器日志:对于运行在容器中的Web服务器,日志文件是非常重要的记录和分析工具。通过将宿主机上的日志目录挂载到容器中,可以实时记录容器内的日志,并将其保存到宿主机上。这样,在容器重启或删除后,日志仍然可以在宿主机上进行查看和分析。

  3. 文件共享:如果有多个容器需要访问相同的文件(例如配置文件、证书文件等),可以将这些文件放置在宿主机上的一个目录中,并将该目录通过宿主机目录挂载到各个容器中。这样,所有容器都可以共享和访问这些文件,而不需要在每个容器中复制一份。

  4. 静态资源存储:对于网站或应用程序中的静态资源(如图片、CSS和JavaScript文件),可以将这些资源放置在宿主机上的一个目录中,并通过宿主机目录挂载到运行Web服务器的容器中。这样,容器就可以直接从宿主机上加载和提供静态资源,而不需要将资源复制到每个容器中。

一、数据卷挂载

1.数据卷是什么

数据卷是一个虚拟目录,它将宿主机目录映射到容器内目录,方便我们操作容器内文件,或者方便迁移容器产生的数据。

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

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

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

2.数据卷的基本使用

创建数据卷
docker volume create 数据卷名称

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

查看所有数据卷
docker volume ls

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维  

查看数据卷信息
docker volume inspect my-vol

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维 

 删除一个volume
docker volume rm my-vol

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

挂载数据卷

在用 docker run 命令的时候,使用 --mount 标记来将 数据卷 挂载到容器里。在一次 docker run 中可以挂载多个 数据卷 。

docker run -itd \
--name 容器名字 \
--mount source=数据卷名称,target=容器中的对应目录 \
镜像名称

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

最好是通过run而非create/start创建启动容器,create/start命令创建启动容器后,再挂载数据卷 相当麻烦,要修改很多配置文件,但并非不可以。

加了“\”意为将最后的回车换行给注释了,系统理解为命令还没有结束,因而是继续等待用户进行 输入,直到读到结束符,如回车

  • 如果数据卷不存在,docker会自动创建
  • 如果容器上目录不存在, docker会自动创建

注意:-it挂载后会直接进入容器,-itd则是在挂载不进入

查看是否挂载成功

首先查看我们数据卷的目录位置

docker inspect name

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

该目录就是数据卷的目录,我们现在进入该目录新建一个文本

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

然后我们进入容器查看是否有该文件,如果有文件说明挂载成功实现共享

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

二、宿主机目录挂载

1.什么是目录挂载

录挂载是将主机上的一个目录直接挂载到容器中,容器中的文件会直接覆盖主机上的文件,这种方式不适合多个容器共享数据。目录挂载的好处是可以方便地将主机上的文件或目录与容器中的文件或目录进行同步,方便开发和调试。

2.目录挂载的基本使用

首先我们在宿主机上创建一个目录用于存放资源

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

将提前准备好的war放入该目录中

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

挂载目录
docker run -itd \
--name 容器名字 \
--mount type=bind,source=宿主机目录,target=容器中的对应目录 \
镜像名称

或者使用简化版本

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

解释该命令的各个部分如下:

  • docker run: 运行一个新的容器。
  • -itd: 这是三个选项的组合:
    • -i:保持标准输入 (stdin) 打开,即使未附加也可以与容器进行交互。
    • -t:为容器分配一个伪终端 (pseudo-TTY)。
    • -d:将容器设为后台运行模式。
  • --name t1:为容器指定一个名称为 "t1",以便于管理和引用它。
  • -v /soft:/user/local/tomcat/webapps:将本地宿主机上的目录 /soft 挂载到容器内的 /user/local/tomcat/webapps 目录。这意味着容器中的 Tomcat 应用程序将能够访问并使用位于 /soft 目录下的文件。
  • -p 8080:8080:将容器内的端口 8080 映射到宿主机的端口 8080。这样,当在宿主机上访问 http://localhost:8080 时,实际上是访问容器内运行的 Tomcat 服务器。
  • tomcat:8.5.40:使用 tomcat:8.5.40 镜像启动容器。 

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维 但是这么使用有一个弊端,它是将整个文件夹进行替换我们想要的效果是单个文件进行替换

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

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

 这样就可以精准替换我们想要的文件并且不应该原文件了

三、案例(实现Tomcat在线部署)

实现 Tomcat 在线部署是指在 Tomcat 运行的过程中,通过上传 WAR 文件或目录来动态地添加、删除或更新 Web 应用程序。这种方式可以避免每次更改应用程序时都要重新启动 Tomcat 的麻烦,并大大提高了开发和调试的效率。

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

但是直接点击就会报错,原因是因为我们没有用户信息

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维 

 所以我们现在结合上面的内容进行目录挂载,首先我们需要

修改E:\apache-tomcat-8.5.40\webapps\manager\META-INF\context.xml

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

修改E:\apache-tomcat-8.5.40\conf\tomcat-users.xml

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

将就该完成的文件复制到liunx目录中

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

将我们docker中的tomcat文件进行替换

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

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维

到这里我的分享就结束了,欢迎到评论区探讨交流!!

💖如果觉得有用的话还请点个赞吧 💖

【Docker】数据卷挂载以及宿主机目录挂载的使用,Docker实战,docker,容器,运维文章来源地址https://www.toymoban.com/news/detail-792379.html

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

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

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

相关文章

  • docker搭建nginx并且挂载宿主机目录

    1、安装docker,这里就不赘述了 2、查看nginx版本 3、设置nginx对外的挂载目录 4、拷贝一份nginx.conf文件到/root/docker/nginx/conf/目录下 5、拉取相应的docker镜像 6、搭建nginx服务器 7、搭建完成之后查看容器的运行状态 8、至此,nginx就搭建完成了!!

    2024年02月11日
    浏览(42)
  • docker简介以及docker安装redis、mysql并实现数据挂载宿主机

    1、简介 官网 docker官网:http://www.docker.com 仓库 Docker Hub官网: https://hub.docker.com/ 2、前提 2.1 前提条件: Docker必须部署在Linux内核的系统上 目前,CentOS 仅发行版本中的内核支持 Docker。Docker 运行在CentOS 7 (64-bit)上, 要求系统为64位、Linux系统内核版本为 3.8以上 2.2查看自己的内核

    2024年02月04日
    浏览(51)
  • 当docker中容器运行时,如何将目录和宿主机进行挂载

    容器已运行,但还想挂载文件 容器已经运行起来了,突然想给容器的目录进行挂载,通常是在运行容器时加上 -v  命令 进行挂载。运行起来的容器想挂载文件夹可以通过修改容器在宿主机的配置文件进行解决。 在配置文件中加入新的挂载 1.查看容器存放目录 2.进入该目录

    2024年01月25日
    浏览(52)
  • k8s 目录和文件挂载到宿主机

    k8s生产中常用的volumes挂载方式有:hostPath、pv,pvc、nfs 1.hostPath挂载      hostPath是将主机节点文件系统上的文件或目录挂载到Pod 中,同时pod中的目录或者文件也会实时存在宿主机上,如果pod删除,hostpath中的文件不会被删除。( 生成的pod只能在同一个节点上 ,调度到其他节

    2024年01月19日
    浏览(47)
  • Docker之宿主机与容器之间的文件复制与挂载

    宿主机与容器之间的文件挂载与复制 1、从宿主机复制到容器命令格式为:       docker cp 宿主机的本地地址 容器名/容器ID:容器路径  先在宿主机里面创建一个666.txt的文件,然后docker cp 命令把文件复制到容器中。 2、从容器复制到宿主机命令格式:      docker cp 容器名字

    2024年02月13日
    浏览(56)
  • 解决docker通过volumes挂载文件,宿主机修改后容器内不同步,重启服务才能同步

    将文件的权限改为777,即 chmod 777 filename 。 详细解释在该文章: https://huaweicloud.csdn.net/633114e5d3efff3090b51a5a.html 说明: 这是由于linux系统文件挂载机制导致的。 docker通过volumes挂载文件到容器中,有以下两种方式: 1、挂载目录 2、挂载具体文件:并不是挂载了某个文件的路径,

    2024年03月10日
    浏览(86)
  • Docker Desktop使用宿主机Windows的配置文件持久化存储数据

    《微软官网Windows 上的 Docker 引擎帮助文档》 以Nginx为例 把Nginx的配置文件复制到Windows 注意:Windows的盘符是小写的,以及目录直接是用反斜杠的!(我掉这坑里好久!!!) 修改宿主机的nginx.conf配置文件 删除nginx容器 重启启动一个新的Nginx容器 访问localhost

    2024年02月09日
    浏览(52)
  • docker使用宿主机代理

    我是在ubuntu虚拟机里面装的docker,尝试过docker里面装clash,但是失败了。使用上面的方法,docker容器内可以ping通github.com。ALL_PROXY里面的端口号因人而异。 docker 容器内使用宿主机的代理配置 | Zach Ke\\\'s Notes (kebingzao.com)

    2024年02月16日
    浏览(61)
  • Jenkins容器使用宿主机Docker

    构建镜像和发布镜像到harbor都需要使用到docker命令。而在Jenkins容器内部安装Docker官方推荐直接采用宿主机带的Docker即可。 设置Jenkins容器使用宿主机Docker 设置宿主机docker.sock权限: 添加数据卷

    2024年01月18日
    浏览(50)
  • Jenkins(Docker版)中使用宿主机的Docker

    (1)宿主机安装好了Docker。 (2)宿主机拉取Jenkins的最新镜像。 使用Jenkins将打包好的镜像推送到远程镜像仓库时,运行docker login命令的时候,控制台报错:docker command not found。 Jenkins容器内部并没有安装Docker,但是我不想在内部再安装一个Docker,而是想直接使用使用宿主机

    2024年02月12日
    浏览(40)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包