Docker数据存储之Volumes详解

现在我来给大家详细讲解“Docker数据存储之Volumes详解”的完整攻略,过程中会包含两个示例,以更好地帮助理解。

Docker数据存储之Volumes详解

什么是Volumes?

Volumes 是 Docker 中用于存储数据的一种机制。当容器在运行时需要存储一些数据时,可以通过 Volumes 将容器内的数据持久化到容器外的主机上,从而在容器销毁重建等情况下,数据仍然能够保留下来。

Volumes的类型

Docker 中 Volumes 分为两种类型:Named VolumesHost Volumes

Named Volumes

Named Volumes 是 Docker 中一种基于容器的命名和管理的卷。它由 Docker Daemon 进行管理,并在主机文件系统中的 /var/lib/docker/volumes 目录下存储数据。通过该方式创建的卷,可以在同一台机器上的不同容器之间共享使用。

创建 Named Volumes 的命令为:

docker volume create my_volume

启动容器时,在以下命令中使用 --mount 标志挂载该卷:

docker run -d -v my_volume:/data --name my_container image_name command_to_run

Host Volumes

Host Volumes 是 Docker 中一种通过直接挂载主机文件系统上的目录作为卷的卷。它允许 Docker 容器可以直接访问主机的文件系统,并在容器外进行卷的管理和操作。由于并不依赖 Docker Daemon 进行管理,因此 Host Volumes 的创建和管理过程相对简单。

启动容器时,在以下命令中使用 -v 标志挂载该卷:

docker run -d -v /host_path:/container_path --name my_container image_name command_to_run

示例1:创建并使用Named Volumes

接下来我们通过一个示例来演示如何使用 Named Volumes。在这个示例中,我们将创建一个简单的 Nginx 容器,将其共享 Named Volumes,并在容器中创建一个静态页面。首先,我们需要创建一个 Named Volumes,命名为 my_html

docker volume create my_html

接下来,我们运行下面的命令,在启动容器时,将容器内的 /usr/share/nginx/html 目录挂载到刚才创建的 Named Volumes my_html 中:

docker run -d -v my_html:/usr/share/nginx/html --name my_nginx_container nginx

在这个容器中,我们可以通过以下命令来创建一个静态页面:

docker exec -it my_nginx_container sh
echo "Hello, Docker Volumes!" > /usr/share/nginx/html/index.html

最后,我们可以通过访问主机上的 my_html 目录来确认我们的静态页面是否存储的正确:

cd /var/lib/docker/volumes/my_html/_data
cat index.html

如果输出结果是 Hello, Docker Volumes!,则代表存储成功。

示例2:使用Host Volumes

接下来我们通过另一个示例来演示如何使用 Host Volumes。在这个示例中,我们将在宿主机上的 /opt/data 目录创建一个 Host Volumes,然后将该目录挂载到 Docker 容器内,最后在容器中创建一些文件。首先我们需要通过以下命令来在宿主机上创建一个目录:

sudo mkdir -p /opt/data

接下来,在启动容器时,我们需要将 /opt/data 目录挂载到容器内的 /data 目录,命名为 my_data_dir

docker run -d -v /opt/data:/data --name my_data_container busybox

在容器中,我们可以通过以下命令来创建一些文件:

docker exec -it my_data_container sh
cd /data
touch file1.txt
touch file2.txt

最后,我们可以通过以下命令确认文件是否存储在 /opt/data 目录中:

ls /opt/data

如果输出结果是 file1.txt file2.txt,则代表存储成功。

总结

本文详细讲解了 Docker 中 Volumes 的概念以及两种类型的用法,并通过两个示例展示了它们的用法。通过这篇文章的学习,相信大家已经对 Docker 中的 Volumes 有了更深入的了解。

本站文章如无特殊说明,均为本站原创,如若转载,请注明出处:Docker数据存储之Volumes详解 - Python技术站

(0)
上一篇 2023年5月16日
下一篇 2023年5月16日

相关文章

  • Terraform 系列-Terraform Cloud 比 Terraform OSS 有哪些增强?

    系列文章 ? Terraform 系列文章 前言 最近在使用 Terraform Cloud 来置备 OCI 的 Always Free Tier, 发现它非常好用,相比 Terraform OSS, 用起来省心多了。 也借此总结学习下:Terraform Cloud 比 Terraform OSS 有哪些增强,这些增强功能面向哪些客户,解决了哪些痛点? 可…

    Docker 2023年4月14日
    00
  • Docker 容器文件系统详细介绍(图文)

    下面是对“Docker 容器文件系统详细介绍(图文)”这篇文章的详细解读,以及两个示例说明: Docker 容器文件系统详细介绍(图文) 什么是 Docker 容器文件系统? Docker 容器文件系统是指 Docker 在运行容器时所使用的文件系统,包括容器镜像文件系统(即镜像层)和容器文件系统(即容器层)。容器镜像文件系统是指一个 Docker 镜像所包…

    Docker 2023年5月16日
    00
  • docker制作node程序镜像:

    准备: 需要5个文件 新建一个docker文件夹 1 .ignore git忽略文件用的 2 pakage.json 安装NODE程序的 也可以直接拷贝进 docker文件加 3 node环境 linux版本 4 node程序 5 dockerfile配置文件 package可以有也可以没有 此处分为两种: 一种是node程序在git上 一种是直接拷贝到do…

    Docker 2023年4月12日
    00
  • 10分钟学会docker

    10分钟学会docker 什么是docker Docker是一种容器化技术,它可以让开发者将应用程序和依赖项打包到一个独立的容器中,从而使得应用程序可以跨平台运行并且更加轻便、灵活。Docker容器可以在任何支持Docker的主机上运行,例如Linux、MacOS和Windows系统。 安装docker 在进行Docker开发之前,我们首先需要安装Docke…

    Docker 2023年5月16日
    00
  • 【解决】docker 容器中 consul集群问题处理

    现象描述:    node1 和node2 日志反复出现 add remove node3节点。 node3 节点 一直 驳回 node1 和node2 认为node3已经dead的消息  不断重启server3 的node3 和重装consul 集群 都不能解决     server1 —>node1   server2 —> node…

    Docker 2023年4月12日
    00
  • docker–docker版本以及安装

    3.1 docker 版本介绍 https://www.docker.com/ Docker CE 在 17.03 版本之前叫 Docker Engine, Docker Engine 的版本号范围: 0.1.0 ~ 1.13.1 在 2017 年 3 月 2 日, docker 团队宣布企业版 Docker Enterprise Edition ( EE …

    Docker 2023年4月13日
    00
  • Docker中配置国内镜像设置

    配置 Docker 国内镜像可以使得从 Docker Hub 拉取镜像时速度更快并且能够避免因网络访问问题而导致无法拉取的情况。以下是在 Docker 中如何配置国内镜像的完整攻略: 步骤一:检查已安装 Docker 版本 在开始配置 Docker 国内镜像之前,首先需要确定已安装 Docker 的版本。本文针对 Docker 19.03.12 版本进行介绍…

    Docker 2023年5月16日
    00
  • docker部署geoserver

    两种方式: 1.直接部署geoserver为一个服务 docker-compose文件: version: ‘3’ services: geoserver: restart: always image: thinkwhere/geoserver container_name: geoserver volumes: – “./data_dir:/opt/geo…

    Docker 2023年4月12日
    00
合作推广
合作推广
分享本页
返回顶部