Docker数据存储总结

Docker 数据存储总结

为什么需要 Docker 数据存储?

Docker 容器是临时性的,每次启动一个容器时,它都会从零开始创建一个全新的环境。容器间的状态不会共享,当容器被删除时,所有容器中存储的状态和数据都会被永久删除。

在许多情况下,需要在多个容器间共享数据和状态。这就需要使用 Docker 数据存储来解决问题。

存储类型

Docker 提供了多种数据存储方案,包括:

  • Volumes
  • Bind Mounts
  • tmpfs 挂载

Volumes

Volumes 是一种 Docker 数据存储机制,可以将一个本地文件系统目录或者一个远程存储系统的目录挂载到 Docker 容器中。Volumes 的数据可以在容器间共享。

Volumes 的主要优点:

  • 数据可以被容器独立管理
  • 数据可以在文件系统中被快速备份和还原
  • 容器可以与数据隔离,即容器被删除时数据不受影响

使用命令创建一个名为 myvolume 的 volume:

docker volume create myvolume

使用命令启动一个容器,并将 myvolume 挂载到容器的 /app 目录:

docker run -d --name mycontainer -v myvolume:/app myimage

Bind Mounts

Bind Mounts 是一种 Docker 数据存储机制,可以将一个本地文件系统目录或者一个远程存储系统的目录挂载到 Docker 容器中。不同之处在于,在 Bind Mounts 的情况下,文件或目录是存在于 Docker 容器外的,并通过挂载点挂载到容器内。

Bind Mounts 的主要优点:

  • 可以将本地文件系统的任何目录挂载到容器中
  • 可以将多个容器共享同一个目录

使用命令启动一个容器,并将本地 /app 目录挂载到容器的 /app 目录:

docker run -d --name mycontainer -v /app:/app myimage

tmpfs 挂载

tmpfs 挂载将临时文件系统挂载到容器内存中,volumes 和 bind mounts 的区别是数据存在于内存中,而不是本地磁盘。

使用命令启动一个容器,并将 tmpfs 挂载到容器 /app 目录:

docker run -d --name mycontainer --mount type=tmpfs,destination=/app myimage

示例

以下是示例说明如何使用 Docker 数据存储:

示例1:使用 Volumes 存储数据

首先创建一个名为 myvolume 的 volume,将 myvolume 挂载到容器的 /app 目录:

docker volume create myvolume

docker run -d --name mycontainer -v myvolume:/app myimage

现在,可以在本地的 myvolume 目录中创建文件,文件内容将会自动同步到 mycontainer 的 /app 目录中:

echo "Hello world" > /var/lib/docker/volumes/myvolume/_data/hello.txt

示例2:使用 Bind Mounts 存储数据

使用命令启动一个容器 mycontainer,并将本地 /app 目录挂载到容器的 /app 目录:

docker run -d --name mycontainer -v /app:/app myimage

在本地的 /app 目录中创建文件,文件内容将会自动同步到 mycontainer 的 /app 目录中:

echo "Hello world" > /app/hello.txt

现在,可以在容器内查看文件,文件内容已同步:

docker exec -it mycontainer sh
cat /app/hello.txt # 输出 "Hello world"

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

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

相关文章

  • 重启docker服务应用自启停命令(推荐)

    当我们在使用 Docker 部署应用程序时,我们经常需要手动启动或停止 Docker 容器。这会变得很繁琐,特别是当我们需要重启服务器或更新 Docker 镜像时。 因此,我们可以使用以下方法来重启 Docker 服务和应用程序的自启停命令: 重启 Docker 服务 我们可以使用以下命令来重启 Docker 服务: sudo systemctl resta…

    Docker 2023年5月16日
    00
  • Docker 镜像优化(从1.16GB到22.4MB)

    我来为你详细讲解“Docker 镜像优化(从1.16GB到22.4MB)”的完整攻略。 1. 概述 在使用Docker构建应用时,我们经常需要打包成镜像并发布到仓库中。但是有些应用的镜像体积可能非常庞大,不仅占用存储空间,还会导致镜像拉取、传输等过程变得缓慢。因此,优化Docker镜像的大小以提高构建效率和使用效果非常有必要。 本攻略将为你介绍两种优化Doc…

    Docker 2023年5月15日
    00
  • docker之启动创建容器流程

    libcontainer的工作流程       execdriver的run方法通过docker daemon提交一份command信息创建了一份可供libcontainer解读的容器配置container,继而创建真正的docker容器。OCI组织成立后,libcontainer进化为runC ,因此从技术上说,未来libcontainer/runC创建的…

    Docker 2023年4月13日
    00
  • 部署维护docker环境的详细教程

    下面是部署维护docker环境的详细教程: 一、安装docker 1.1 安装docker Docker是一种轻量级的虚拟化技术,可以通过APP Store或官网下载安装,本教程以在Ubuntu系统下安装Docker为例,命令如下: sudo apt-get update sudo apt-get install docker.io 1.2 配置docker…

    Docker 2023年5月16日
    00
  • K8S 实用工具之二 – 终端 UI K9S

    开篇 ? 引言: 磨刀不误砍柴工 工欲善其事必先利其器 第一篇:《K8S 实用工具之一 – 如何合并多个 kubeconfig?》 像我这种,kubectl 用的不是非常溜,经常会碰到以下情况: 忘记命令,先敲 –help,再敲命令,效率低 忘记加 -n 指定 namespace 太长的命令经常记错或敲错,比如 kubectl exec -it… 无法…

    2023年4月9日
    00
  • 8个你可能不知道的Docker知识

    8个你可能不知道的Docker知识 Docker 是一个流行的应用容器化技术,它可以帮助你将应用、环境打包到一个独立的容器中,从而可以方便地在不同的环境中部署和运行。本文介绍了 8 个你可能不知道的 Docker 知识,希望对你学习和使用 Docker 有所帮助。 1. 理解 Docker 镜像和容器的关系 Docker 镜像是一个只读的模板,在运行时镜像会…

    Docker 2023年5月16日
    00
  • Docker 启动 OpenResty

    OpenResty® 是一个基于 Nginx 与 Lua 的高性能 Web 平台,其内部集成了大量精良的 Lua 库、第三方模块以及大多数的依赖项。用于方便地搭建能够处理超高并发、扩展性极高的动态 Web 应用、Web 服务和动态网关。简单来说,OpenResty 是集成了更多功能的 Nginx。 步骤 拉取镜像 docker pull openresty/…

    Docker 2023年4月16日
    00
  • docker部署archery

    一.centos7部署docker 1 通过 uname -r 命令查看你当前的内核版本 uname -r 2  确保 yum 包更新到最新。 yum update 3 卸载旧版本 yum remove docker docker-common docker-selinux docker-engine 4 安装需要的软件包, yum-util 提供yum-c…

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