在linux docker容器中挂载使用云存储网关

背景

阿里云云存储网关是一个让用户通过SMB/NFS协议访问阿里云对象存储(OSS)的产品,用户通过部署云存储网关,并在客户端挂载云存储网关提供的挂载点,就可以轻松的访问自己在OSS 对象存储桶(bucket)中的数据,非常的方便。 那么如果用户在自己的ECS中部署了容器环境,如果在容器中直接访问网关的共享呢?本文就将介绍下,在linux的docker环境中如何挂载云存储网关的NFS共享。

步骤

首先,让我们准备好存储网关的共享,我们可以根据文件网关快速入门的介绍来先创建一个文件网关,并绑定需要访问的oss bucket,在这个例子中,我们将共享名称取名为docker-volume。

接下来,我们到我们的linux客户端当中,首先使用showmount 命令,查看linux客户端是否可以访问到云存储网关的nfs 共享。

# 我们以nas共享IP地址192.168.0.76为例,可以看到showmount 输出了
# /docker-volume (everyone) 这个我们的共享名称的目录

# showmount -e 192.168.0.76 
Export list for 192.168.0.76:
/docker-volume (everyone)

确定客户端访问共享没问题后,就可以为docker配置云存储网关共享作为后端存储资源了,我们运行下面的命令来基于云存储网关的nfs共享来创建一个docker volume:

docker volume create --driver local \
    --opt type=nfs \
    --opt o=addr=192.168.0.76,rw \
    --opt device=:/docker-volume \
    sgw-docker
    

上边的命令中,--opt type=nfs 表示我们是创建一个nfs类型的 docker volume, ----opt o=addr=后面是云存储网关提供的共享地址,在这个例子中是192.168.0.76, rw代表是以读写的方式挂载这个共享,用户也可以根据需要将其修改为只读模式(ro) --opt device=: 后面就是云存储网关提供的挂载路径,在这个例子中,我们在云存储网关控制台配置的共享路径为/docker-volume。

运行docker volume create成功后,一个基于云存储网关nfs共享的docker volume就创建成功了,我们可以使用docker volume inspect命令来检查我们的配置, 可以看到我们取名为sgw-docker 的这个docker volume的详细配置信息。

# docker volume inspect sgw-docker
[
    {
        "CreatedAt": "2020-09-21T16:24:31+08:00",
        "Driver": "local",
        "Labels": {},
        "Mountpoint": "/var/lib/docker/volumes/sgw-docker/_data",
        "Name": "sgw-docker",
        "Options": {
            "device": ":/docker-volume",
            "o": "addr=192.168.0.76,rw",
            "type": "nfs"
        },
        "Scope": "local"
    }
]

接下来,我们就可以在启动docker容器的时候指定这个docker volume了,我们以一个centos的docker 实例为例:

docker run -v sgw-docker:/data -ti centos:latest  /bin/bash

通过上边的命令,我们以交互方式启动了一个基于centos镜像的docker实例,并将之前创建的sgw-docker 这个docker volume映射到了容器中的/data文件夹,接下来,我们在容器的/data文件夹中创建一个名为hello的测试文件,并写入测试数据:

# cd /data
# touch hello
# echo "test" > hello
# cat hello
test

然后到oss的管理控制台中,进入我们绑定了云存储网关绑定的路径中查看,我们可以看到,在linux docker容器实例中写入的数据已经写入到了对象存储(OSS)中。

在linux docker容器中挂载使用云存储网关

通过这种方式,我们在docker容器中可以非常方便的写入和访问对象存储(OSS)中的数据,是不是非常的方便呢?大家赶快试试吧!

上一篇:国内物联网产业仍处初级阶段 运营商NB-IoT大有可为


下一篇:MYSQL数据的备份与恢复