Docker进阶数据卷&目录挂载及在线部署

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

前言

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

一. 数据卷介绍

Docker 中的数据卷(Volume)是用于持久化存储容器数据的一种机制。它可以将主机上的目录或文件与容器内的目录或文件进行关联,从而实现数据的共享和持久化。

使用数据卷可以实现以下几个方面的优势:

  1. 数据持久化:容器运行期间,数据卷中的数据可以被保留下来,即使容器被删除或重新创建,数据仍然可以被访问到。

  2. 数据共享:多个容器可以共享同一个数据卷,从而实现容器之间的数据共享。

  3. 数据备份与恢复:可以通过备份数据卷来实现容器数据的备份,然后在需要的时候恢复到其他容器中。

  4. 高性能访问:数据卷通常会比容器内部的文件系统性能更好,特别是对于大量读写操作的场景。

二. 数据卷挂载

1.数据卷操作

docker volume create v1  (v1为数据卷的名称)

 1.1查看数据卷

docker volume ls

1.2 删除数据卷

docker volume rm v1(数据卷名称)

 1.3 查看所有数据卷

docker volume ls

1.4 查看数据卷信息

docker volume inspect v1(数据卷名称)

 1.5 docker容器挂载数据卷

docker run -it \
--name c1 \
--mount source=v1,target=/testdir \
centos

注:c1为容器名字,v1为挂载的数据卷,target=/***是指在创建时指定创建一个名为***的目录,在我们为某个容器挂载数据卷时只有在容器创建时才能为它进行挂载,当前命令指创建一个名为c1的容器并为它指定的数据卷为v1,挂载的目录为testdir(当前名字可以任意,在创建容器时会自动创建该目录)

4.数据卷共享

当我们在进行挂载数据卷时,可以不同容器指定同一数据卷,只需要将容器名更改即可,我们不管在哪个容器进行操作,都会同时共享一个数据卷 

小结

容器和数据卷是两个独立的不同的模块,当我们操作容器时,例如删除,不会影响数据卷,数据卷依然存在,当我们下次创建数据卷时依然可以挂载

小实战(将war包挂载到数据卷中并运行在Tomcat) 

1.找到数据卷路径

查看所有数据卷

docker volume ls

查看指定数据卷信息(v1为数据卷名称)

docker inspect v1

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

2.cd 进入当前目录

将提前准备好的测试war包拖到当前目录下

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维 3.创建容器将war包挂载到当前容器中

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

注意:当前命令是将我们的数据卷目录替换掉当前目录/usr/local/tomcat/webapps,也就是将当前目录中的文件全部替换成数据卷目录文件使它们数据保持一致

这里我们可以回到自己的windows,在浏览器中利用IP/项目名 进行访问

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

访问成功后说明项目成功挂载到数据卷中并运行成功

三.目录挂载

1.创建目录

创建目录并进入

mkdir soft
cd soft

2.创建容器并挂载当前目录

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

在上面的命令中soft将webapps直接替换了,等于进行了一个重新命名,-v 既可以挂载目录
-v 还可以单独挂载文件

 四.Tomcat在线部署

实现思路:通过将修改好的配置文件挂载到目录中,然后通过当前的用户名密码进入到当前系统中的Tomcat实现在线部署

1.将配置文件上传到虚拟机中

在我们的本机Windows中的tomcat文件夹中找到conf/tomcat-users.xml文件(用户信息文件),并将其上传到刚刚虚拟机上创建的soft文件夹

示例:

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

 再将Tomcat中的webapps\manager\META-INF\context.xml进行上传

示例

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

2.修改配置文件

双击进入tomcat-users.xml,我们在当前文件位置加入以下代码,修改完成后保存并退出

注意:下面的password那一栏需要修改为自己的密码

<role rolename="manager-gui"/>
<user username="tomcat" password="自己的密码" roles="manager-gui"/>

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

然后双击进入到我们的context.xml文件,将下面示图的部分进行注释(一般是没有注释的),修改完成后保存并退出

 3.将配置文件挂载到目录中

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

注:tomcat-users.xml为自己的刚刚上传的用户信息文件的文件名,/usr/local/tomcat/conf/tomcat-users.xml为要替换的当前虚拟机中Tomcat的tomcat-users.xml文件,context.xml同理

4.在线部署

进入管理页进行在线部署

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

 登录输入自己的用户名和密码进入(用户名一般为tomcat)

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

登录进入后上传war包即实现在线部署

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

报错解决

 1.Error response from daemon: failed to create task for container: failed to create shim task: OCI runtime create failed: runc create failed: unable to start container process: error during container init: error mounting "/soft/tomcat-users.xml" to rootfs at "/usr/local/tomcat/conf/tomcat-users.xml": mount /soft/tomcat-users.xml:/usr/local/tomcat/conf/tomcat-users.xml (via /proc/self/fd/7), flags: 0x5000: not a directory: unknown: Are you trying to mount a directory onto a file (or vice-versa)? Check if the specified host path exists and is the expected type
Error: failed to start containers: t

Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

原因:路径参数不正确,检查自己的文件路径名,soft是否在根路径

2.

docker: Error response from daemon: Conflict. The container name "/t1" is already in use by container "c7e532fc6407996f987f41f88ef2661dd054d9a74ad0b0effd728345680e8ef9". You have to remove (or rename) that container to be able to reuse that name.
See 'docker run --help'.
Docker进阶数据卷&目录挂载及在线部署,Docker,docker,linux,运维

原因:容器重复,删除之前的容器名相同的容器,或者创建时换一个名称 文章来源地址https://www.toymoban.com/news/detail-816758.html

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

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

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

相关文章

  • docker 安装 mysql 并挂载 配置文件和数据目录

    1、宿主机创建挂载目录 2、搜索镜像 拉取官方支持版本(OFFICIAL 为 ok的版本) 3、以 mysql 作为基础镜像构建容器并挂载目录 your_password 为 mysql root 用户的密码 4、进入容器 执行上面命令后会要求输入密码,密码为 第三步的 your_password 5、退出容器

    2024年02月06日
    浏览(43)
  • windows 搭建docker 以及部署前后端项目及程序,对所需目录挂载nginx进行配置显示

    1.我们在电脑上进行搜索 ,启用或者关闭windows功能 2. 如果没有 Hype-V的话,具体添加步骤如下: 在本地创建一个.bat文件,内容为:  保存为.bat文件,然后右键,以管理员身份运行。 等待安装好之后,最后一步点击Y。完成安装。 然后以管理员身份运行powershell.这个其实就是

    2024年02月08日
    浏览(41)
  • Docker -v 挂载主机目录到容器中(及数据卷容器)

    使用 Docker 的过程中,经常需要挂载主机上的目录或文件到 Docker 容器中,以实现数据的共享或持久化。而 docker run -v 命令便是用于挂载主机目录到 Docker 容器中的常用命令。 在创建启动容器时,使用 -v 参数设置数据卷 注意事项: 目录必须是绝对路径 如果目录不存在,会自

    2024年02月10日
    浏览(46)
  • 使用docker数据卷解决挂载目录的时候文件消失不见的问题

    之前使用挂载目录挂载docker内的配置文件的时候,发现本地的目录为空,想到用容器卷来解决,解决完以后一些操作会方便很多 卷 (Docker Volume) 是受控存储,是由 Docker 引擎进行管理维护的。因此使用卷,你可以不必处理 uid、SELinux 等各种权限问题,Docker 引擎在建立卷时会自

    2024年02月05日
    浏览(61)
  • [Docker]三.Docker 部署nginx,以及映射端口,挂载数据卷

    Docker 部署 Nginx,首先需要下载nginx镜像,然后启动这个镜像,就运行了一个nginx的容器了 启动nginx容器成功后,这样就创建了一个web服务了,验证这个容器是否成功:  进入nginx容器访问url,验证nginx nginx容器创建成功后,那么怎么在外部访问这个容器的url呢? 想在外部访问容器里面的 n

    2024年02月04日
    浏览(54)
  • docker本地目录挂载

    小命令 还是以nginx为例,上篇文章我们制作了nginx静态目录的数据卷,此时查看nginx容器时会展示出来(docker inspect nginx 展示信息太多,这里只截图数据卷挂载信息): 解释: Source:宿主机数据卷位置。 Destination:已挂载的容器目录 Name:数据卷名称 下边命令只是把默认数据

    2024年02月20日
    浏览(38)
  • Docker挂载目录

    read-only权限 read-write权限 设置相同的安全上下文 授予目录读写执行权限, 注意用户和组和宿主机上的用户和组匹配

    2024年02月07日
    浏览(42)
  • Docker:本地目录挂载

    查看MySQL容器,判断是否有数据卷挂载 基于宿主机目录实现MySQL数据目录、配置文件、初始化脚本的挂载 docker inspect nginx 是用来获取关于 Docker 容器或镜像配置和元数据的详细信息的命令。 当你运行 docker inspect 命令时,它将返回一个 JSON 格式的输出,其中包含有关指定容器或

    2024年02月06日
    浏览(43)
  • Docker挂载目录失败问题解决

    天行健,君子以自强不息;地势坤,君子以厚德载物。 每个人都有惰性,但不断学习是好好生活的根本,共勉! 文章均为学习整理笔记,分享记录为主,如有错误请指正,共同学习进步。 运行镜像生成容器时挂载目录失败 执行的命令如下 为了方便看我们使用 换行 执行命

    2024年02月15日
    浏览(61)
  • 【Docker】Linux中Docker数据管理的数据卷及挂载

    目录 一、数据管理 1. 讲述 2. 应用场景 二、数据卷的应用 1. 命令 2. tomcat镜像 3. 挂载数据卷 4. 项目部署在数据卷 三、目录挂载 四、完善Tomcat配置 每篇一获 Docker 的数据管理主要涉及到两个方面: 数据卷(Volumes) 和 绑定挂载(Bind Mounts) 。 数据卷(Volumes) :数据卷是

    2024年01月20日
    浏览(62)

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

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

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

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

二维码1

领取红包

二维码2

领红包