Docker NFS volume创建与使用方式

 更新时间:2024年02月04日 10:01:13   作者:ghostwritten  
这篇文章主要介绍了Docker NFS volume创建与使用方式,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教

1. 简介

Docker 卷是为Docker 容器设置持久存储的首选机制。

卷是安装在容器内的主机文件系统上的现有目录。

它们可以从容器和主机系统访问。

Docker 还允许用户挂载通过 NFS 远程文件共享系统共享的目录。

为此目的创建的卷使用 Docker 自己的 NFS 驱动程序,无需在主机系统上挂载 NFS 目录。

2. 创建 NFS Docker 卷

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

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

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

详细信息包括:

  • volume type
  • write mode
  • 远程 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 卷。

docker volume ls

3. 在容器中挂载 NFS

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

sudo apt update
sudo apt install nfs-common

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

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

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

docker inspect [container-name]

docker exec -it [container-name] ls /mnt

4. Docker Compose 挂载 NFS 卷

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

创建 docker-compose.yml 文件。

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]"

注意:

nolock和soft选项确保 Docker 在与 NFS 服务器的连接丢失时不会冻结( freeze)

参考:

NFS Docker Volumes: How to Create and Use

总结

以上为个人经验,希望能给大家一个参考,也希望大家多多支持脚本之家。

相关文章

  • 关于Docker部署postgresql数据库的问题

    关于Docker部署postgresql数据库的问题

    这篇文章主要介绍了Docker部署postgresql数据库的相关知识,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友可以参考下
    2022-03-03
  • Docker端口映射后,外机访问不了的问题及解决

    Docker端口映射后,外机访问不了的问题及解决

    Docker端口映射后外机访问不了的问题可能包括:网络配置错误(需与宿主机在同一网段)、容器未启动、防火墙设置问题(需关闭或开放映射端口)、未开启IP转发
    2025-02-02
  • CentOS 8安装docker最详细方法

    CentOS 8安装docker最详细方法

    本文给大家介绍CentOS 8安装docker最详细教程,本文给大家介绍的非常详细,对大家的学习或工作具有一定的参考借鉴价值,需要的朋友参考下吧
    2021-11-11
  • docker容器中安装vim问题解决

    docker容器中安装vim问题解决

    本文主要介绍了docker容器中安装vim问题解决,文中通过示例代码介绍的非常详细,具有一定的参考价值,感兴趣的小伙伴们可以参考一下
    2021-08-08
  • Dockerfile中的copy命令使用

    Dockerfile中的copy命令使用

    在使用Dockerfile中的copy命令时,如果使用相对路径并且文件不在当前目录下,会导致构建失败,需要使用绝对路径或者将文件移动到Dockerfile所在的目录下
    2025-02-02
  • docker启动jar包输出日志的问题以及解决

    docker启动jar包输出日志的问题以及解决

    这篇文章主要介绍了docker启动jar包输出日志的问题以及解决方案,具有很好的参考价值,希望对大家有所帮助,如有错误或未考虑完全的地方,望不吝赐教
    2023-08-08
  • docker部署nginx服务的实现步骤

    docker部署nginx服务的实现步骤

    本文主要介绍了docker部署nginx服务的实现步骤,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2023-08-08
  • CentOS7部署19版docker(简单,可跟做)

    CentOS7部署19版docker(简单,可跟做)

    这篇文章主要介绍了CentOS7部署19版docker,文中通过示例代码介绍的非常详细,对大家的学习或者工作具有一定的参考学习价值,需要的朋友们下面随着小编来一起学习学习吧
    2020-01-01
  • 使用 docker-compose 运行 MySQL的方法

    使用 docker-compose 运行 MySQL的方法

    这篇文章主要介绍了使用 docker-compose 运行 MySQL的方法,本文给大家介绍的非常详细,具有一定的参考借鉴价值,需要的朋友可以参考下
    2019-09-09
  • MySQL docker容器数据更新统计shell脚本代码方式

    MySQL docker容器数据更新统计shell脚本代码方式

    本文介绍了如何创建和配置一个脚本文件,使其能够每隔一小时执行一次,用于更新MySQL统计信息,脚本使用Docker来执行MySQL命令,并将结果保存到文件中,文章还强调了权限设置和配置定时任务的步骤
    2025-01-01

最新评论