【Docker】挂载数据卷

一、Docker数据卷说明及操作

在Docker中挂载数据卷是一种将数据持久化保存的方法,以便容器之间或容器与主机之间共享数据。以下是如何在Docker中挂载数据卷的步骤:

1、创建数据卷

首先,您需要创建一个数据卷。可以使用以下命令创建一个数据卷:

bash 复制代码
docker volume create my_volume

这将创建一个名为 my_volume 的数据卷。您可以将其替换为您喜欢的任何名称。

2、运行容器并挂载数据卷

现在,您可以运行容器并将数据卷挂载到容器中。使用 -v--volume 选项来指定挂载数据卷的方式。例如:

bash 复制代码
# docker如何挂载数据卷 其中,--name 为指定容器名称
docker run -d -v wcs_client_db:/opt/work/jxv_wcs_client/jxvdb -p 8899:8899 --name wcs_client wcs_client:1.0
  • -d:以后台模式运行容器。
  • -v my_volume:/path/in/container :这里 my_volume 是数据卷的名称, /path/in/container 是容器内的路径,您可以根据需要更改它。
  • my_image:这是要运行的容器映像的名称。

这将在容器内的 /path/in/container 路径挂载数据卷 my_volume,容器内的数据将持久化保存在该数据卷中。

3、使用数据卷

容器运行后,您可以在容器内部或其他容器中使用挂载的数据卷。任何对挂载点的更改都会反映在数据卷上,因此数据可以在容器之间共享。

4、删除容器和数据卷

如果要删除容器,但保留数据卷,可以使用以下命令:

bash 复制代码
docker rm container_name

如果要删除容器和关联的数据卷,可以使用以下命令:

bash 复制代码
docker rm -v container_name

要删除不再使用的数据卷,可以使用以下命令:

bash 复制代码
docker volume rm my_volume

通过这些步骤,您可以在Docker中成功挂载数据卷,以便在容器之间共享和持久化数据。这对于将配置文件、数据库文件等持久化的应用程序非常有用。

二、补充说明

Docker 中挂载一个主机目录(使用 -v--volume 参数)和创建一个 Docker 数据卷之间有一些区别:

1、生命周期

  • 挂载主机目录:挂载主机目录是将主机上的一个目录直接挂载到容器中。这意味着挂载的目录的生命周期与主机上的目录完全一致。如果您删除主机上的目录,它将同时从容器中消失,反之亦然。
  • 创建 Docker 数据卷:Docker 数据卷是独立于容器和主机的 Docker 服务的一部分,因此其生命周期不受容器的启动和停止影响。数据卷的生命周期独立于容器和主机,这意味着即使删除了容器,数据卷仍然存在,可以被其他容器挂载和访问。数据卷的生命周期持久且独立。

2、管理

  • 挂载主机目录:挂载主机目录通常更容易管理,因为您可以直接在主机上操作和查看这些文件,对文件的更改也直接反映在容器中。
  • 创建 Docker 数据卷:数据卷需要更多的 Docker 命令来创建、删除和管理,它们通常更适合在多个容器之间共享数据,或者需要数据持久性的情况。

3、跨主机挂载

  • 挂载主机目录:如果您需要在多台 Docker 主机之间共享数据,挂载主机目录可能会更复杂,因为要确保目录在每台主机上都存在且保持同步。
  • 创建 Docker 数据卷:Docker 数据卷更容易跨主机挂载,因为它们是 Docker 服务的一部分,可以在多台主机之间复制和共享。
    综上所述,选择挂载主机目录还是创建 Docker 数据卷取决于您的需求。如果您需要持久的、独立于容器的数据存储,或者希望在多个容器之间共享数据,那么创建 Docker 数据卷可能更合适。如果只是需要容器和主机之间的临时数据共享,挂载主机目录可能更方便。

三、使用场景说明

案例:如果您安装的是 Derby 数据库,并且希望在容器中运行它,您可以选择挂载主机目录或创建 Docker 数据卷,具体取决于您的需求和用例:

1、挂载主机目录

  • 适用场景:如果您只是想在容器中运行 Derby 数据库,并且不需要数据持久性,或者不需要与其他容器共享数据库数据,那么挂载主机目录可能是一个简单的解决方案。
  • 优点:容易设置和管理,容器内的 Derby 数据库可以直接读取和写入主机上的目录。
  • 缺点:数据的生命周期与主机上的目录紧密关联,如果主机上的目录被删除,数据也会丢失。

示例命令(挂载主机目录):

bash 复制代码
docker run -d -v /宿主机目录:/容器目录 my_derby_image

2、创建 Docker 数据卷

  • 适用场景:如果您希望 Derby 数据库的数据持久性,或者希望将数据库数据与容器解耦,以便能够更轻松地备份、迁移或共享数据,那么创建 Docker 数据卷可能更合适。
  • 优点:数据卷的生命周期独立于容器和主机,更适合持久化数据和数据共享。
  • 缺点:需要更多的 Docker 命令来创建、管理和备份数据卷。

示例命令(创建 Docker 数据卷):

bash 复制代码
docker run -d -v my_derby_data_volume:/容器目录 my_derby_image

总的来说,如果您需要 Derby 数据库的数据持久性或希望将数据库数据与容器解耦,我建议使用 Docker 数据卷。这将使您更轻松地管理和维护数据库数据,并且允许您在不同的容器中共享相同的数据卷,以满足不同的用例需求。如果只是为了临时测试或开发目的,挂载主机目录也是一个可行的选项。

相关推荐
景天科技苑24 分钟前
【云原生开发】K8S多集群资源管理平台架构设计
云原生·容器·kubernetes·k8s·云原生开发·k8s管理系统
TeYiToKu42 分钟前
笔记整理—linux驱动开发部分(9)framebuffer驱动框架
linux·c语言·arm开发·驱动开发·笔记·嵌入式硬件·arm
dsywws1 小时前
Linux学习笔记之时间日期和查找和解压缩指令
linux·笔记·学习
yeyuningzi1 小时前
Debian 12环境里部署nginx步骤记录
linux·运维·服务器
wclass-zhengge1 小时前
K8S篇(基本介绍)
云原生·容器·kubernetes
上辈子杀猪这辈子学IT1 小时前
【Zookeeper集群搭建】安装zookeeper、zookeeper集群配置、zookeeper启动与关闭、zookeeper的shell命令操作
linux·hadoop·zookeeper·centos·debian
颜淡慕潇1 小时前
【K8S问题系列 |1 】Kubernetes 中 NodePort 类型的 Service 无法访问【已解决】
后端·云原生·容器·kubernetes·问题解决
minihuabei1 小时前
linux centos 安装redis
linux·redis·centos
lldhsds2 小时前
书生大模型实战营第四期-入门岛-1. Linux前置基础
linux
wowocpp3 小时前
ubuntu 22.04 硬件配置 查看 显卡
linux·运维·ubuntu