
docker Compose 是一款功能强大的协调工具,旨在使用 Docker 简化多容器应用程序的管理和部署。docker-compose.yml 文件通过在一个文件中定义具有多个服务、 *** 和卷的复杂应用程序来简化部署。使用 Docker Compose 的一个重要方面是使用卷管理持久化数据。
本文探讨了在 Docker Compose 中使用卷处理持久性数据的重要性,并提供了有效使用卷的实践指南。
Docker 卷是一个重要的生态系统组件,用于存储和管理由短暂容器生成的持久数据。即使在移除或更新容器后,数据也能持久存在,这样就不会在日常操作中丢失重要的应用程序数据。
卷与容器的文件系统是分离的,因此你可以轻松地对它们进行备份,在多个容器之间共享它们,并在主机之间迁移它们。
与绑定挂载(即从主机系统到容器的目录挂载)相比,使用卷的一个关键优势是可移植性。你可以在不同主机或容器之间快速移动卷,但必须将绑定挂载绑定到主机系统上的特定目录。
这种可移植性使中的数据管理更灵活、更高效。卷还兼容各种存储驱动程序,让您可以根据具体的使用情况选择更佳的存储解决方案。
Docker 卷对于管理基于容器的应用程序中的数据至关重要。它们有两种不同的类型:命名卷和匿名卷。本节将深入探讨这两种类型的主要区别,并演示如何实施它们来管理应用程序中的数据。
命名卷和匿名卷的用途不同,提供的控制和管理功能也各不相同。由于命名卷具有人类可读的标识符,且易于管理,因此在大多数使用案例中,命名卷通常是首选,但要更大限度地发挥这两种类型的优势,必须了解它们的功能。
命名卷有一个用户定义的名称,便于识别、管理和在多个容器之间共享。Docker 创建并管理命名卷,并将其数据存储在主机系统的特定位置。该位置通常位于 Docker 安装目录下,有一个与卷名相对应的唯一 ID。
命名卷提供了更大的控制性和灵活性,因为你可以使用它们的人可读标识符轻松地引用和操作它们。
要在 Docker 中创建命名卷,请运行:
docker volume create my_named_volume
与命名卷不同,匿名卷没有用户定义的名称。相反,Docker 会在你创建容器时自动创建它们,并为卷分配一个唯一的 ID。
由于缺乏人类可读的标识符,管理和存储卷通常比较困难。由于 Docker 会自动创建卷,因此通常使用匿名卷进行临时存储。如果在创建容器时没有指定命名卷,也会出现匿名卷。
要使用匿名卷创建容器,请运行:
docker run -v /data nginx
此命令将匿名卷挂载到容器 nginx 内的 /data 目录。可以用挂载卷的容器名称替换 nginx 。
可以在 docker-compose.yml 文件中定义卷,从而简化了卷的创建和管理。该文件包含应用程序的服务、 *** 和卷的配置,可在一个地方轻松管理应用程序的资源。
要在 docker-compose.yml 文件中创建一个已命名的卷,请在 volumes 关键字下定义它。如有必要,还可以指定卷驱动程序和选项。
要把卷附加到容器上,请在 docker-compose.yml 文件的 service 定义中使用 volumes 关键字。指定卷名称后的冒号和要挂载卷的容器路径。
你还可以使用相同的卷名,在多个容器之间共享卷。
下面是在 docker-compose.yml 文件中创建名为 web_data 和 db_data 的卷的例子:
version: '3.8' services: web: image: nginx volumes: - web_data:/var/www/html web-test: image: nginx volumes: - web_data:/var/www/html # Web and web test share the web_data volume db: image: mysql volumes: - db_data:/var/lib/mysql volumes: web_data: db_data: driver: local # Define the driver and options under the volume name driver_opts: type: none device: /data/db_data o: bind
此示例定义了两个命名卷。然后,它将卷挂载到各自容器的特定路径下。接下来,它将 web_data 卷挂载到 web 容器中的 /var/www/html 目录,将 db_data 卷挂载到 db 容器中的 /var/lib/mysql 目录。
web 和 web-test 容器共享 web_data 卷,允许它们访问和修改相同的数据卷。
通过在 docker-compose.yml 文件中定义和管理卷,你可以根据需要轻松创建、更新和删除卷,而无需使用 Docker 命令手动管理它们。这种简化的流程让您可以专注于开发和部署应用程序,而 Docker Compose 则负责处理底层资源管理。
Docker Compose 提供了多种命令,可帮助您有效管理应用程序及其资源。让我们详细回顾一下这些命令及其与卷的关系:
docker compose up 会创建并启动你的应用程序,包括它的服务、 *** 和卷。如果你在 docker-compose.yml 文件中定义了已命名的卷,这条命令会自动创建它。docker compose down 停止并删除应用程序的服务和 *** 。默认情况下,它不会删除已命名的卷。要删除已命名的卷,请使用 --volumes 或 -v 标志。docker compose ps 会列出容器及其当前状态,包括与卷相关的信息。docker compose config 验证并显示从 docker-compose.yml 文件生成的有效配置,包括卷定义。要列出所有卷,请使用 ls :
docker volume ls
输出会显示所有已命名的卷,包括由 Docker Compose 创建的卷。
要查看特定卷的详细信息,请使用 inspect 。它会输出卷的相关信息,如名称、驱动程序、挂载点和选项:
docker volume inspect db_data
卷的详细信息以 json 格式给出。例如,考虑到上面提供的 docker-compose.yml 文件,这就是返回的输出结果:
[
{
"CreatedAt": "some-date-here",
"Driver": "local",
"Labels": null,
"Mountpoint": "/path/on/host/where/volume/is/mounted",
"Name": "db_data",
"Options": {
"device": "/data/db_data",
"o": "bind",
"type": "none"
},
"Scope": "local",
"Status": {
"Mounts": [
...
]
}
}
]
要删除 Docker 卷,可以使用 docker volume rm ,后面跟卷名:
docker volume rm volume-name
要,请使用 prune:
docker volume prune
该命令有助于清理开发环境并回收存储空间。它会删除所有与容器无关的未使用卷,包括 Docker Compose 创建的卷。
利用这些命令及其与卷相关的功能,你可以有效地管理应用程序的资源,确保更佳性能和存储空间的高效利用。
自 2023 年 7 月起,。在新发布的 Docker Desktop 中,它也不再可用。不过,Docker Desktop 仍然支持 docker-compose 别名,以便将命令重定向到 docker compose ,从而提高与第三方工具和脚本的兼容性。
要将现有代码从 Docker Compose 版本 1 切换到版本 2,只需将破折号换成空格即可。例如, docker-compose up 变成 docker compose up 。
有了版本 2,你就可以直接在 Docker 命令行界面(CLI)中使用 & compose 命令,切换 Docker 上下文以在云服务上构建容器,并使用亚马逊 ECS 和微软 ACI。
这篇文章强调了在 Docker Compose 中使用卷管理持久性数据的重要性。卷是 Docker 生态系统中的一个重要组件,它使您能够存储和管理 Docker 容器生成的数据。有了 Docker 卷,即使在您删除或更新容器后,重要的应用程序数据也会持续存在,有助于保持应用程序的完整性和一致性。
Docker Compose 提供了一种在 docker-compose.yml 文件中创建和管理卷的简化 *** 。这种 *** 简化了开发过程,确保了资源的高效利用。
使用卷还能使开发变得灵活高效,Docker Compose 提供了各种与卷相关的命令,帮助你有效监督应用程序资源。利用这些命令,您可以轻松创建、检查和清理卷。
扫描二维码推送至手机访问。
版权声明:本文由2345好导航站长资讯发布,如需转载请注明出处。
宝塔面板中的网站管理是非常重要的一部分,也是站长经常需要使用到的功能模块。网站管理,主要用于管理和创建WEB站点。如果您是宝塔面板的使用用户,应该对此模块有充分的了解,以便于您更高效地管理网站。 宝塔面板网站管理模块包括:添加新网站、修改默认页、设置默认站点、站点列表、站点的运行与停止、备份站点、...
宝塔的数据库管理,是基于phpmyadmin管理和新建数据库。其最大的便利性就是类似,通过面板可以快速访问进行管理操作,无需单独访问phpmyadmin的主页。 此外,在宝塔面板进行数据库管理,你也对数据库名、用户名及密码等信息一目了然,及可以对数据库执行快速备份或者导入。 添加数据...
宝塔面板的安全管理可以设置SSH开关、禁用PING、放行端口、屏蔽IP等相关的操作。 SSH的设置 SSH的关闭与启动,点击下图的开关,即可开启或关闭SSH远程连接。 SSH端口的修改,SSH远程连接的默认端口为22,修改端口前,请先查看该端口是否被占用。 PING命令的...
由于市场上有各种可用的数据库,用户经常会就MongoDB与MySQL进行辩论,以找出更好的选择。 使用MySQL等关系数据库的组织在根据不断变化的需求管理和存储数据时可能会面临一定的困难。同时,新公司想知道选择什么数据库,这样他们就不会在开发过程中遇到问题。 同时,构建金融应用程序的开发人员...
对于初学者和那些刚刚进入WordPress开发的人来说,PHP是您可以开始的最佳起点之一。这是一种超级简单直接的语言,使其成为之一,因此相当容易上手,它构成了在线开发的支柱。另外,如果你想在WordPress后端工作,你肯定需要学习它。 但是,如果您不想在昂贵的大学课程上花费数月或数年时间怎么...
PHP开发:有些人认为它是,另一些人认为它是一种过时的技术,不值得花时间学习。但是这些数字说明了什么,尤其是当您查看PHP开发人员的薪水时? 虽然肯定有许多更新、更炫、更令人兴奋的语言,但PHP仍然是后端Web开发的可靠主食,也是许多雇主仍在寻找的技能。 有兴趣自己成为PHP开发人员吗?我们...