首页 > 其他分享 >如何创建和使用Docker中的NFS存储卷

如何创建和使用Docker中的NFS存储卷

时间:2022-10-22 12:33:54浏览次数:50  
标签:容器 存储 name volume NFS docker Docker

Docker 卷是为Docker 容器设置持久存储的首选机制。卷是安装在容器内的主机文件系统上的现有目录。它们可以从容器和主机系统访问。Docker 还允许用户挂载通过 NFS 远程文件共享系统共享的目录。为此目的创建的卷使用 Docker 自己的 NFS 驱动程序,无需在主机系统上挂载 NFS 目录。

先决条件

  • 在远程机器上安装和配置 NFS 服务器。
  • Docker 安装在本地机器上。
  • 具有 root/sudo 权限的用户帐户。

如何创建和使用Docker中的NFS存储卷_bash

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

创建 NFS Docker 卷

创建和管理 Docker 卷的最简单方法是使用docker volume命令及其子命令。

创建 NFS Docker 卷的语法包括两个选项。

  1. --driver选项定义了local卷驱动程序,它接受类似于mount Linux 中的命令的选项。
  2. --opt多次调用该选项以提供有关卷的更多详细信息。

详细信息包括:

  • 卷类型。
  • 写模式。
  • 远程 NFS 服务器的 IP 或 Web 地址。
  • 服务器上共享目录的路径。
docker volume create --driver local \
--opt type=nfs \
--opt o=addr=[ip-address],rw \
--opt device=:[path-to-directory] \
[volume-name]

下面的示例说明了如何创建一个名为nfs-volume. 该卷包含/mnt/nfsdir位于服务器上的目录,具有rw(读/写)权限。服务器的 IP 地址是10.240.12.70

成功执行的命令输出卷的名称。

如何创建和使用Docker中的NFS存储卷_bash_02

注意:在创建 NFS 卷之前,请确保 Docker 主机系统的IP 地址列在/etc/exports服务器上的文件中。

列出可用的 Docker 卷。

docker volume ls

输出列出了您创建的卷。

如何创建和使用Docker中的NFS存储卷_服务器_03

使用子命令检查卷inspect

docker volume inspect [volume-name]

输出显示卷配置。

如何创建和使用Docker中的NFS存储卷_bash_04

在容器中挂载 NFS

要将 NFS 卷挂载到容器中,请nfs-common在主机系统上安装软件包。

首先更新存储库。

sudo apt update

使用 APT 安装nfs-common软件包。

sudo apt install nfs-common

确认您要安装软件包并等待安装完成。

如何创建和使用Docker中的NFS存储卷_docker_05

注意:如果使用 YUM 或 RPM 进行包管理,则 DNS 客户端包称为nfs-utils.

使用docker run 命令启动容器。在该部分中指定 NFS 卷和安装点--mount

docker run -d -it \
--name [container-name] \
--mount source=[volume-name],target=[mount-point]\
[image-name]

下面的示例将 NFS 卷挂载nfs-volume到容器中的/mnt目录。

如何创建和使用Docker中的NFS存储卷_bash_06

使用命令确认卷已成功挂载docker inspect

docker inspect [container-name]

Mounts输出部分包含安装到容器中的卷。

如何创建和使用Docker中的NFS存储卷_docker_07

使用以下命令进入容器环境 bash shell docker exec

docker exec -it [container-name] /bin/bash

如何创建和使用Docker中的NFS存储卷_bash_08

列出目录的内容/mnt

ls /mnt

输出显示托管在/mnt/nfsdir服务器目录中的文件。

如何创建和使用Docker中的NFS存储卷_docker_09

如果您在 Docker 容器中创建文件,也可以在服务器上的原始目录中访问该文件。要进行测试,请使用touch 命令在/mnt目录中创建一个空文件。

touch /mnt/docker1.txt

在服务器上,导航到您共享的目录并列出其内容。出现在 Docker 容器中创建的文件。

如何创建和使用Docker中的NFS存储卷_docker_10

使用 Docker Compose 挂载 NFS 卷

如果您使用Docker Compose来管理您的容器,请通过在 YML 文件中定义来挂载 NFS 卷。

创建 YML 文件。

nano docker-compose.yml

volumes在该部分中定义 NFS 卷。

version: "3.2"

services:
[service-name]:
image: [docker-image]
ports:
- "[port]:[port]"

volumes:
- type: volume
source: [volume-name]
target: /nfs
volume:
nocopy: true
volumes:
[volume-name]:
driver_opts:
type: "nfs"
o: "addr=[ip-address],nolock,soft,rw"
device: ":[path-to-directory]"

注意nolocksoft选项确保 Docker 在与 NFS 服务器的连接丢失时不会冻结。

使用命令创建并启动容器docker-compose up

结论

本文解释了如何创建和挂载包含通过 NFS 共享的目录的 Docker 卷。本文中介绍的方法涉及使用命令行或 Docker Compose 安装卷。

主要分享低代码、微服务、容器化、SAAS‬、系统架构方面的的‬内容‬‬,希望‬大家‬点赞‬,评论,关注‬。

喜欢的朋友欢迎转发、关注~

标签:容器,存储,name,volume,NFS,docker,Docker
From: https://blog.51cto.com/sharepointchina/5785763

相关文章

  • Kubernetes---Volume存储卷
    一、Volume存储卷简介Volume将容器中的指定数据和容器解耦,并将数据存储到指定的位置,不同的存储卷功能不一样,如果是基于网络存储的存储卷可以可实现容器间的数据共享和......
  • linux docker容器安装nacos
    1、添加nacos数据源createdatabasecloud_nacos;usecloud_nacos;/**Copyright1999-2018AlibabaGroupHoldingLtd.**LicensedundertheApacheLicense......
  • 1_docker安装软件
    1_docker安装软件docker安装mysql流程Ubuntu使用Docker镜像安装MySQL5.7_evak_的博客-CSDN博客curl-fsSLhttps://get.docker.com|bash-sdocker--mirrorA......
  • docker安装rabbitmq(win10已安装Docker Desktop)
    打开rabbitmq官方网站:DownloadingandInstallingRabbitMQ—RabbitMQ如图所示: 在WindowsPowerShell中运行:dockerrun-it--rm--namerabbitmq-p5672:5672-p......
  • 分布式指存储高可用
    @目录一、存储高可用的理解二、主备方案三、主从方案四、主备倒换五、主主方案六、主从集群[一主多从]七、分散式集群[多主多从]八、总结一、存储高可用的理解概念......
  • Docker
    Docker1、docker简介​Docker是一个开源的应用容器引擎,让开发者可以打包他们的应用以及依赖包到一个可移植的容器中,然后发布到任何流行的Linux或Windows操作系统......
  • 11-11-分布式架构数据存储设计与实践 (下)_ev
                        在old2秒后才有机会移入new的                       ......
  • Docker 基础详解
     一、docker安装(ubuntu22.04)配置阿里源sudosed-i-r's#http://(archive|security).ubuntu.com#https://mirrors.aliyun.com#g'/etc/apt/sources.list&&sudoapt-......
  • 1.ClickHouse系列之Docker本地部署
    本文介绍docker-compose方式部署clickhouse数据库编写docker-compose.yml文件:version:'3'services:elasticsearch:image:clickhouse/clickhouse-server......
  • Docker基础:Docker是什么,为什么这么火
    一、Docker是什么?Docker是一个开源的应用容器引擎,它基于go语言开发,并遵从Apache2.0开源协议。使用Docker可以让开发者封装他们的应用以及依赖包到一个可移植的容器中,然后发......