欢迎来到我的CSDN主页!
我是君易--鑨,一个在CSDN分享笔记的博主。
推荐给大家我的博客专栏《Docker之数据卷的使用》。
如果感觉还不错的话请给我关注加三连吧!
Docker 提供了多种方式来管理容器中的数据,以确保数据的持久性和可靠性。以下是一些常见的 Docker 数据管理方式:
数据卷是 Docker 中最常用的数据管理方式之一。数据卷是容器与主机之间共享的持久化存储,独立于容器的生命周期。数据卷可以用于存储应用程序数据、配置文件等。容器可以通过挂载数据卷来访问和修改其中的数据。数据卷的好处包括数据的持久性、容器之间的共享数据,以及方便数据备份和恢复。
# 创建数据卷
docker volume create my_volume
# 启动容器并挂载数据卷
docker run -d -v my_volume:/path/in/container my_image
绑定挂载允许将主机文件系统上的特定路径挂载到容器内的路径。这种方式可以用于在容器中访问主机上的文件或目录,也可以用于在主机和容器之间实现数据共享。
# 启动容器并使用绑定挂载
docker run -d -v /host/path:/container/path my_image
Docker 允许在容器中创建匿名卷,这些卷不会直接与主机上的文件系统关联,而是存储在 Docker 管理的卷中。这样可以确保容器的数据在主机上是相对隔离的。
# 启动容器并使用匿名卷
docker run -d -v /container/path my_image
可以创建一个专门用于存储数据的容器,其他容器通过挂载这个容器的数据卷来实现数据共享。这样的容器通常被称为数据卷容器。
# 创建数据卷容器
docker create -v /data --name my_data_container my_image
# 启动应用容器,并挂载数据卷容器
docker run --volumes-from my_data_container another_image
Docker Compose 是一个用于定义和运行多容器 Docker 应用程序的工具。通过 Compose 文件,可以方便地定义多个服务、容器、网络和数据卷,并一起管理它们的生命周期。
version: '3'
services:
web:
image: my_web_app
volumes:
- my_volume:/app/data
volumes:
my_volume:
总之,这些数据管理方式可以根据应用程序的需求进行选择和组合。使用适当的数据管理方式有助于确保容器中的数据持久、可靠、易于备份和恢复。
关键特性 | 说明 |
持久性 | 数据卷中的数据是持久的,即使容器被删除,数据卷依然存在。这使得数据可以在容器之间共享,而不受容器生命周期的限制。 |
独立于容器 | 数据卷是独立于容器的实体,它可以被多个容器挂载和共享。这种独立性使得数据卷可以被用于存储共享数据、配置信息等。 |
挂载点 | 在容器内,数据卷通过指定挂载点(Mount Point)来与容器中的路径关联。容器内的应用程序可以读写这个挂载点,实现对数据卷中数据的访问。 |
主机和容器之间的数据传递 | 数据卷可以用于在主机和容器之间传递数据。通过挂载主机上的路径到容器内,可以实现主机和容器之间的数据共享。 |
docker volume create my_volume
docker run -d -v my_volume:/path/in/container my_image
docker volume inspect my_volume
关键特性 | 说明 |
持久性 | 数据卷中的数据是持久的,即使容器被删除,数据卷依然存在。这使得数据可以在容器之间共享,而不受容器生命周期的限制。 |
独立于容器 | 数据卷是独立于容器的实体,它可以被多个容器挂载和共享。这种独立性使得数据卷可以被用于存储共享数据、配置信息等。 |
挂载点 | 在容器内,数据卷通过指定挂载点(Mount Point)来与容器中的路径关联。容器内的应用程序可以读写这个挂载点,实现对数据卷中数据的访问。 |
主机和容器之间的数据传递 | 数据卷可以用于在主机和容器之间传递数据。通过挂载主机上的路径到容器内,可以实现主机和容器之间的数据共享。3.2 s |
docker create -v /data --name my_data_container my_image
docker run --volumes-from my_data_container -d another_image
docker inspect my_data_container
我们创建一个容器并且进入到我们的容器中,在容器中创建一个文件并且编写其内容在里面
然后我们按住ctrl+d退出容器,然后删除所有的容器,再重新创建一个一样的容器。
由上图可知我们在新建的一个容器中并没有我们之前在容器中新建的a.txt文件,因为每个容器的数据都是独立的,而且数据跟随者容器的生命周期的。
首先我们先确保我们有tomcat镜像,没有的话我们输入指令docker pull tomcat 版本执行进行拉取。
我们用tomcat的镜像创建一个容器
我们本机的网页上去访问我们Docker中的服务器,如果访问不了需要我们开放端口号
指令:firewall-cmd --zone=public --add-port=8080/tcp //开放对应端口
firewall-cmd reload //刷新防火墙
我们在tomcat首页可以进行项目发布,点击右侧的Manager App进行发布,但是我们的tomcat没有user.xml文件没有用户信息,因此我们需要添加其文件。 我们可以子外面编写好文件利用数据卷将其放到我们的tomcat中进行其覆盖。
我们进入我们创建的tomcat容器中
我们进入tomcat服务器中的webapps文件目录下,将我们的项目war通过第三方连接工具使用托拉拽的方式添加到里面。
我们创建一个数据卷
挂载数据卷 :
在用 docker run 命令的时候,使用 -- mount 标记来将 数据卷 挂载到容器里。在一次 dockerrun 中可以挂载多个 数据卷 。
我们新建一个窗口进行瓜挂载同一个数据卷,进入其生成的数据卷的文件夹
我们在c3中的testdir中新建一个文件,我们进入到c2的testdir中进行查看
由此可知数据卷的数据是共享的,我们将所有的容器删除掉,我们切换到v1的目录下,将war包拖至该目录下。
我们再执行命令将数据卷的内容弄到指定的目录下。 是一整个目录的替换
我们再去访问虚拟机的tomcat。因为我们的文件覆盖了
因为我们导入的项目包时war包,因此会自动给我们解压,我们可以直接在网页进行访问。
去除容器和数据卷
我们在根目录下创建一个文件夹用于实现目录挂载
切入到该文件中,将我们的war包放入到文件夹中
接下来进行目录挂载。
我们再去网页访问8080
再去访问我们的项目
/soft直接将webapps文件替换掉了。我们去除所有的容器,执行下述指令:
docker run -itd --name t1 -v /soft/oapro.war:/usr/local/tomcat/webapps/oapro.war -p 8080:8080 tomcat:8.5.2
我们再访问项目和服务器
本期的博客分享到此结束
各位老铁慢慢消化
下期博客博主会带来新货
三连加关注,阅读不迷路 !