【Docker】数据管理

Welcome 的Huihui's Code World ! !

接下来看看由辉辉所写的关于Docker的相关操作吧

 

目录

Welcome 的Huihui's Code World ! !

 

前言

一.数据卷

示例演示

示例剖析

数据卷的概述

数据卷的使用

二.数据卷的使用 

1.创建数据卷

2.查看所有数据卷

3.查看数据卷信息

4.查看数据卷的具体信息

5.删除一个数据卷

6.挂载数据卷

三. 挂载主机目录

挂载目录

案例


前言

上篇博文已经介绍了Docker时什么以及它的初步使用,也了解到的它的好处和妙处。但是我们在使用Docker的时候,也会遇到一些问题。在以前传统的虚拟化环境中,数据通常存储在主机的硬盘上,容器直接访问主机的文件系统。然而,这种方法在容器化环境下并不适用,因为容器的可移植性和隔离性会导致数据丢失的问题。所以,我们需要使用特定的数据管理策略来解决这个问题那么这篇博文讲的就是Docker的数据管理。

一.数据卷

上面也说了,在容器化的环境中,数据可能会丢失,但这样的一句话好像不够具象,那么这里我就用一个示例来演示一下。


示例演示

首先创建并且开启这个容器

进入这个容器并且创建一个文件

查看一下

其中它显示出的是Linux系统中常见的标准目录

bin目录通常存放二进制可执行文件
dev目录通常存放设备文件
etc目录通常存放系统配置文件
home目录通常存放用户主目录
lib和lib64目录通常存放系统库文件
lost+found目录通常用于恢复文件系统中丢失的数据
media和mnt目录通常用于挂载外部设备或者网络文件系统
opt目录通常存放第三方软件包
proc目录通常是一个虚拟文件系统,提供了关于当前进程和系统运行状态的信息
root目录通常是root用户的主目录
run目录通常存放运行时需要的文件
sbin目录通常存放系统管理员使用的二进制可执行文件
srv目录通常存放系统服务相关的数据
sys目录通常是一个虚拟文件系统,提供了关于系统硬件和内核的信息
tmp目录通常存放临时文件
usr目录通常存放系统共享的只读文件
var目录通常存放系统运行时需要修改的文件

这时候把容器都删掉

docker rm -f $(docker ps -aq)

【Docker】数据管理_第1张图片

这时候再看一下根目录,其中那个txt的文件也已经不存在了


示例剖析

        上面的例子就是模拟我们开发中会遇到的情况,上面的那个容器,在开发中,就是我们存放资源的地方,如果我不小心将容器删除了,那么这个资源也不见了,每个容器又都是独立的,这些数据资源又是跟容器绑定的,如果容器消失了,那么数据资源也会消失。所以需要一个东西,它可以是数据能够共享。


数据卷的概述

数据卷是一个可供容器使用的特殊目录,‍‍它绕过文件系统‍‍可以提供很多有用的特性。‍‍

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

数据卷的使用

这里使用数据卷挂载tomcat容器,所以我们需要先拉取tomcat的镜像,并且创建一个tomcat的容器【下面这个命令行就是一行完成了】

 docker run -itd  --name d1  -p 8080:8080 --mount source=v1,target=/usr/local/tomcat/webapps  tomcat:8.5.40 
  • docker run:这是Docker命令,用于创建和运行一个新的容器。
  • -itd:这些是命令的选项参数。它们分别表示使用交互式终端(-i),分离模式运行容器(-d),以及为容器分配一个伪终端(-t)。
  • --name d1:这是容器的名称,此处为"d1"。您可以根据需要指定任何合适的名称。
  • -p 8080:8080:这是端口映射选项,将主机的8080端口映射到容器的8080端口。这样,就可以通过访问主机的8080端口来访问Tomcat容器。
  • --mount source=v1,target=/usr/local/tomcat/webapps:这是挂载选项,它将名为"v1"的卷挂载到容器的"/usr/local/tomcat/webapps"目录上。这样,就可以将本地文件系统中的数据卷挂载到Tomcat容器,实现文件共享或持久化存储。
  • tomcat:8.5.40:这是要拉取和运行的Docker镜像的名称和标签。在这种情况下,它是Tomcat 8.5.40版本的官方镜像。

但是我们也不要忘记将虚拟机中的端口号开放

firewall-cmd --zone=public --add-port=8080/tcp

还要记得刷新一下防火墙哦

firewall-cmd --reload

然后我们就可以访问到tomcat了

【Docker】数据管理_第2张图片

我们常常会用这个tomcat来发布项目

【Docker】数据管理_第3张图片

但是我们没有设置用户信息,就不能够发布

【Docker】数据管理_第4张图片

所以我们就需要使用数据卷啦,在外面将文件修改好,然后把原先的文件给它替换掉。有人可能会问,那为什么不适用vi或者vim去修改tomcat中的文件呢?但其实这些命令它都没有,就连下载的命令都没有,所以目前我们使用数据卷的方式是比较好的

【Docker】数据管理_第5张图片

二.数据卷的使用 

1.创建数据卷

docker volume create 数据卷名称

2.查看所有数据卷

docker volume ls

3.查看数据卷信息

docker volume inspect 数据卷名称

【Docker】数据管理_第6张图片

4.查看数据卷的具体信息

docker inspect 数据卷名称

5.删除一个数据卷

docker volume rm 数据卷名称

6.挂载数据卷

  • 最好是通过run而非create/start创建启动容器,create/start命令创建启动容器后,再挂载数据卷 相当麻烦,要修改很多配置文件,但并非不可以
  • 如果数据卷不存在,docker会自动创建
  • 如果容器上目录不存在, docker会自动创建
docker run -itd \
--name 容器名字 \
--mount source=数据卷名称,target=容器中的对应目录 \
镜像名称

把我们需要发布的war包放进去

【Docker】数据管理_第7张图片

挂载数据卷

【Docker】数据管理_第8张图片

然后便可以在浏览器访问到这个项目了,但是也会出现问题,因为我们这样子写是将其中【webapps中的文件内容】的文件夹都给替换了,就只剩下我们放进去的war包了....这样显然不是我们预期的结果。所以我们需要用到一个更加细致的东东,它可以挂载单个的文件而不是文件夹,这里说的就是使用挂载主机目录的方式

三. 挂载主机目录

挂载目录

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

但是上面这种写法有点麻烦,我们可以使用精简版的

docker run -itd \
--name 容器名字 \
--v \
镜像名称

这个就是可以挂载到具体的文件,同时的话也是可以挂载目录的,相比于上面的方式,更加灵活一点

tomcat和项目都能够访问

【Docker】数据管理_第9张图片

案例

目标时实现用tomcat发布项目,现在的问题就是少了一些配置文件

【Docker】数据管理_第10张图片

我们可以这样做,先打开自己本机电脑中的tomcat,先找到需要修改的两个配置文件

【Docker】数据管理_第11张图片

然后使用拖拽的方式将文件先拖拽到自己所建的一个文件夹中

【Docker】数据管理_第12张图片

然后修改这两个文件,先修改那个user的,将这个页面上面标蓝的这一段给复制过来

【Docker】数据管理_第13张图片【Docker】数据管理_第14张图片

编辑完成之后,按esc退出编辑模式,之后:wq进行保存并退出

然后就修改第二个文件

【Docker】数据管理_第15张图片

然后进行目录挂载

【Docker】数据管理_第16张图片

这时候我们就能够登录进去发布项目啦

【Docker】数据管理_第17张图片【Docker】数据管理_第18张图片【Docker】数据管理_第19张图片

好啦,今天的分享就到这了,希望能够帮到你呢! 

你可能感兴趣的:(Docker,docker,容器,运维)