Docker NFS volume 创建与使用

简介: Docker NFS volume 创建与使用

Docker NFS volume 创建与使用

tags: 存储

文章目录

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

1035234-20181020215539574-213176954.png

列出可用的 Docker 卷。

docker volume ls

1035234-20181020215539574-213176954.png

1035234-20181020215539574-213176954.png

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]

1035234-20181020215539574-213176954.png

docker inspect [container-name]

1035234-20181020215539574-213176954.png

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)

参考:


相关文章
|
11月前
|
关系型数据库 MySQL 数据库
Docker容器数据持久化之Data Volume(数据卷)与容器数据共享(1)
Docker容器数据持久化之Data Volume(数据卷)与容器数据共享(1)
146 0
|
1月前
|
存储 Linux Go
Docker Volume - 目录挂载以及文件共享
Docker Volume - 目录挂载以及文件共享
24 0
|
存储 Devops Docker
【DevOps系列】Docker数据卷(volume)详解
【DevOps系列】Docker数据卷(volume)详解
164 0
|
4月前
|
JavaScript 关系型数据库 MySQL
一文详解Docker数据卷(volume)
一文详解Docker数据卷(volume)
|
存储 安全 Linux
Dockerfile 中的 volume 与 docker run -v 的区别
Dockerfile 中的 volume 与 docker run -v 的区别
1591 0
|
iOS开发 Docker MacOS
macOS Docker Volume数据卷存放的位置
macOS Docker Volume数据卷存放的位置
648 0
|
Linux Docker 容器
Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
Docker Review - 使用docker volume数据卷实现容器内的数据与宿主机同步
248 0
|
关系型数据库 MySQL Linux
Docker | Compose创建mysql容器
Docker | Compose创建mysql容器
207 0
Docker | Compose创建mysql容器
|
存储 Linux 应用服务中间件
Docker Volume 看这一篇就够了
Docker Volume 看这一篇就够了
Docker Volume 看这一篇就够了
|
存储 Linux Docker
​CentOS7一键脚本安装docker并创建ES集群(docker版本)
​CentOS7一键脚本安装docker并创建ES集群(docker版本)
418 0
​CentOS7一键脚本安装docker并创建ES集群(docker版本)