🥳🥳Welcome 的Huihui's Code World ! !🥳🥳
接下来看看由辉辉所写的关于Docker的相关操作吧
目录
🥳🥳Welcome 的Huihui's Code World ! !🥳🥳
上篇博文已经介绍了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)
这时候再看一下根目录,其中那个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了
我们常常会用这个tomcat来发布项目
但是我们没有设置用户信息,就不能够发布
所以我们就需要使用数据卷啦,在外面将文件修改好,然后把原先的文件给它替换掉。有人可能会问,那为什么不适用vi或者vim去修改tomcat中的文件呢?但其实这些命令它都没有,就连下载的命令都没有,所以目前我们使用数据卷的方式是比较好的
1.创建数据卷
docker volume create 数据卷名称
2.查看所有数据卷
docker volume ls
3.查看数据卷信息
docker volume inspect 数据卷名称
4.查看数据卷的具体信息
docker inspect 数据卷名称
5.删除一个数据卷
docker volume rm 数据卷名称
6.挂载数据卷
- 最好是通过run而非create/start创建启动容器,create/start命令创建启动容器后,再挂载数据卷 相当麻烦,要修改很多配置文件,但并非不可以
- 如果数据卷不存在,docker会自动创建
- 如果容器上目录不存在, docker会自动创建
docker run -itd \ --name 容器名字 \ --mount source=数据卷名称,target=容器中的对应目录 \ 镜像名称
把我们需要发布的war包放进去
挂载数据卷
然后便可以在浏览器访问到这个项目了,但是也会出现问题,因为我们这样子写是将其中【webapps中的文件内容】的文件夹都给替换了,就只剩下我们放进去的war包了....这样显然不是我们预期的结果。所以我们需要用到一个更加细致的东东,它可以挂载单个的文件而不是文件夹,这里说的就是使用挂载主机目录的方式
挂载目录
docker run -itd \ --name 容器名字 \ --mount type=bind,source=宿主机目录,target=容器中的对应目录 \ 镜像名称
但是上面这种写法有点麻烦,我们可以使用精简版的
docker run -itd \ --name 容器名字 \ --v \ 镜像名称
这个就是可以挂载到具体的文件,同时的话也是可以挂载目录的,相比于上面的方式,更加灵活一点
tomcat和项目都能够访问
案例
目标时实现用tomcat发布项目,现在的问题就是少了一些配置文件
我们可以这样做,先打开自己本机电脑中的tomcat,先找到需要修改的两个配置文件
然后使用拖拽的方式将文件先拖拽到自己所建的一个文件夹中
然后修改这两个文件,先修改那个user的,将这个页面上面标蓝的这一段给复制过来
编辑完成之后,按esc退出编辑模式,之后:wq进行保存并退出
然后就修改第二个文件
然后进行目录挂载
这时候我们就能够登录进去发布项目啦
好啦,今天的分享就到这了,希望能够帮到你呢!😊😊?