如何使用 SSHFS 插件创建 Docker 卷

DockerDockerBeginner
立即练习

💡 本教程由 AI 辅助翻译自英文原版。如需查看原文,您可以 切换至英文原版

简介

在容器化的世界中,Docker 已成为开发者和系统管理员的强大工具。Docker 的关键特性之一是能够管理卷,这使你能够在容器的文件系统之外持久保存数据。在本教程中,我们将探讨如何使用 SSHFS 插件创建 Docker 卷,使你能够无缝地将 Docker 容器与远程文件系统集成。


Skills Graph

%%%%{init: {'theme':'neutral'}}%%%% flowchart RL docker(("Docker")) -.-> docker/VolumeOperationsGroup(["Volume Operations"]) docker(("Docker")) -.-> docker/SystemManagementGroup(["System Management"]) docker(("Docker")) -.-> docker/DockerfileGroup(["Dockerfile"]) docker/VolumeOperationsGroup -.-> docker/cp("Copy Data Between Host and Container") docker/VolumeOperationsGroup -.-> docker/volume("Manage Volumes") docker/SystemManagementGroup -.-> docker/info("Display System-Wide Information") docker/SystemManagementGroup -.-> docker/version("Show Docker Version") docker/DockerfileGroup -.-> docker/build("Build Image from Dockerfile") subgraph Lab Skills docker/cp -.-> lab-411525{{"如何使用 SSHFS 插件创建 Docker 卷"}} docker/volume -.-> lab-411525{{"如何使用 SSHFS 插件创建 Docker 卷"}} docker/info -.-> lab-411525{{"如何使用 SSHFS 插件创建 Docker 卷"}} docker/version -.-> lab-411525{{"如何使用 SSHFS 插件创建 Docker 卷"}} docker/build -.-> lab-411525{{"如何使用 SSHFS 插件创建 Docker 卷"}} end

Docker 卷简介

Docker 卷是 Docker 生态系统中的一项强大功能,它使你能够在容器的生命周期之外持久保存数据。卷提供了一种独立于容器存储和管理数据的方式,使得在容器之间共享数据、备份数据以及确保数据持久性变得更加容易。

在 Docker 环境中,卷是挂载在容器内部的目录或文件,允许容器对该卷进行读写操作。可以使用 Docker CLI 或 Docker Compose 创建和管理卷。

与在容器内使用传统文件系统相比,卷具有以下几个优点:

  1. 数据持久性:即使容器停止、删除或重新创建,卷也能确保数据得以保留。这对于需要持久存储的应用程序(如数据库、日志和用户生成的内容)特别有用。

  2. 数据共享:多个容器之间可以共享卷,从而实现应用程序不同部分之间的数据共享与协作。

  3. 数据备份与恢复:卷可以轻松地进行备份、恢复和迁移,使得管理和保护重要数据变得更加简单。

  4. 性能:与使用容器的文件系统相比,卷可以提供更好的性能,特别是对于 I/O 密集型应用程序。

  5. 灵活性:卷可以从不同位置挂载,包括主机文件系统、网络附加存储或基于云的存储服务,从而在管理数据方面提供了更大的灵活性。

要创建 Docker 卷,可以使用 docker volume create 命令,或者在 Docker Compose 文件中进行定义。创建后,在运行 docker run 命令时,可使用 -v--mount 标志将卷挂载到容器上,或者在 Docker Compose 文件的 volumes 部分进行挂载。

graph TD A[Docker 主机] --> B[Docker 引擎] B --> C[Docker 容器] B --> D[Docker 卷] C --> D

通过了解 Docker 卷的基础知识,你可以在基于 Docker 的应用程序中有效地管理和持久保存数据,确保部署的可靠性和可扩展性。

探索 SSHFS 插件

SSHFS(安全外壳文件系统)插件是一个强大的工具,它允许你通过 SSH 连接将远程目录挂载为 Docker 卷。此插件使你能够利用 SSH 的安全性和灵活性来访问和管理存储在远程服务器或基于云的存储服务上的数据。

什么是 SSHFS 插件?

SSHFS 插件是一个 Docker 卷驱动程序,它使你能够创建由通过 SSH 访问的远程文件系统支持的 Docker 卷。这意味着你可以将远程服务器或云存储服务中的目录挂载为 Docker 卷,从而允许你的容器对该远程位置进行读写数据。

使用 SSHFS 插件的好处

  1. 远程数据访问:SSHFS 插件允许你直接从 Docker 容器访问和管理存储在远程服务器或基于云的存储服务上的数据。
  2. 安全数据传输:通过使用 SSH,SSHFS 插件确保你的数据在 Docker 主机和远程服务器之间安全传输,提供了额外的安全层。
  3. 灵活性:SSHFS 插件可用于挂载来自各种远程系统的目录,包括 Linux、macOS 和 Windows 服务器,以及基于云的存储服务。
  4. 可移植性:使用 SSHFS 插件创建的 Docker 卷可以轻松地在不同的 Docker 主机之间共享和移动,确保应用程序数据的可移植性。

安装和配置 SSHFS 插件

要使用 SSHFS 插件,你需要在 Docker 主机上安装它。你可以在 Ubuntu 22.04 系统上运行以下命令来完成此操作:

sudo apt-get update
sudo apt-get install -y sshfs

安装完 SSHFS 插件后,你可以使用带有 sshfs 驱动程序的 docker volume create 命令创建一个新的 Docker 卷:

docker volume create --driver sshfs \
  --opt [email protected]:/remote/path \
  --opt password=your_ssh_password \
  my-sshfs-volume

此命令创建一个名为 my-sshfs-volume 的新 Docker 卷,该卷使用指定的 SSH 用户和密码,由服务器 example.com 上的远程目录 /remote/path 支持。

通过利用 SSHFS 插件,你可以将远程数据源无缝集成到基于 Docker 的应用程序中,增强部署的灵活性和安全性。

使用 SSHFS 配置 Docker 卷

既然你已经对 Docker 卷和 SSHFS 插件有了基本的了解,那么让我们深入探讨一下使用 SSHFS 插件配置 Docker 卷的过程。

使用 SSHFS 创建 Docker 卷

要使用 SSHFS 插件创建 Docker 卷,可以使用带有 sshfs 驱动程序的 docker volume create 命令。以下是一个示例:

docker volume create --driver sshfs \
  --opt [email protected]:/remote/path \
  --opt password=your_ssh_password \
  my-sshfs-volume

在这个示例中,我们正在创建一个名为 my-sshfs-volume 的新 Docker 卷,它由服务器 example.com 上的远程目录 /remote/path 支持。sshcmd 选项指定 SSH 连接详细信息,password 选项提供 SSH 密码。

在容器中挂载 SSHFS 卷

创建了由 SSHFS 支持的 Docker 卷之后,在运行 docker run 命令时,可以使用 -v--mount 标志将其挂载到容器上。以下是一个示例:

docker run -d \
  --name my-app \
  -v my-sshfs-volume:/app \
  my-app-image

在这个示例中,我们将 my-sshfs-volume Docker 卷挂载到容器内的 /app 目录。这允许容器对创建卷时指定的远程目录进行读写数据。

验证 SSHFS 卷

要验证 SSHFS 卷是否正常工作,可以在正在运行的容器内执行一个命令,并检查挂载目录的内容:

docker exec my-app ls /app

这应该列出作为 my-sshfs-volume Docker 卷挂载的远程目录的内容。

通过遵循这些步骤,你可以轻松地使用 SSHFS 插件配置 Docker 卷,使你的容器能够安全地访问和管理存储在远程服务器或基于云的存储服务上的数据。

总结

在本教程结束时,你将对如何使用 SSHFS 插件创建 Docker 卷有扎实的理解。这些知识将使你能够利用 Docker 卷管理系统的优势,同时在容器内无缝访问远程文件系统,从而提升你的整体 Docker 工作流程和效率。