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

简介: 本文介绍在linux环境下的docker容器中如何通过云存储网关以文件接口存储访问对象存储(OSS)中的数据。

背景

阿里云云存储网关是一个让用户通过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)中。

Screen Shot 2020-09-21 at 4.27.52 PM.png

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

目录
相关文章
|
4月前
|
Linux 网络安全 Docker
盘古栈云,创建带ssh服务的linux容器
创建带ssh服务的linux容器
349 146
|
4月前
|
监控 Kubernetes 安全
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
蒋星熠Jaxonic,技术探索者,以代码为笔,在二进制星河中书写极客诗篇。专注Docker与容器化实践,分享从入门到企业级应用的深度经验,助力开发者乘风破浪,驶向云原生新世界。
还没搞懂Docker? Docker容器技术实战指南 ! 从入门到企业级应用 !
|
4月前
|
监控 Linux 调度
【赵渝强老师】Docker容器的资源管理机制
本文介绍了Linux CGroup技术及其在Docker资源管理中的应用。通过实例演示了如何利用CGroup限制应用程序的CPU、内存和I/O带宽使用,实现系统资源的精细化控制,帮助理解Docker底层资源限制机制。
443 6
|
4月前
|
NoSQL 算法 Redis
【Docker】(3)学习Docker中 镜像与容器数据卷、映射关系!手把手带你安装 MySql主从同步 和 Redis三主三从集群!并且进行主从切换与扩容操作,还有分析 哈希分区 等知识点!
Union文件系统(UnionFS)是一种**分层、轻量级并且高性能的文件系统**,它支持对文件系统的修改作为一次提交来一层层的叠加,同时可以将不同目录挂载到同一个虚拟文件系统下(unite several directories into a single virtual filesystem) Union 文件系统是 Docker 镜像的基础。 镜像可以通过分层来进行继承,基于基础镜像(没有父镜像),可以制作各种具体的应用镜像。
621 5
|
4月前
|
存储 关系型数据库 MySQL
MySQL Docker 容器化部署全指南
MySQL是一款开源关系型数据库,广泛用于Web及企业应用。Docker容器化部署可解决环境不一致、依赖冲突问题,实现高效、隔离、轻量的MySQL服务运行,支持数据持久化与快速迁移,适用于开发、测试及生产环境。
760 4
|
Web App开发 安全 Linux
|
5月前
|
Linux 应用服务中间件 Shell
二、Linux文本处理与文件操作核心命令
熟悉了Linux的基本“行走”后,就该拿起真正的“工具”干活了。用grep这个“放大镜”在文件里搜索内容,用find这个“探测器”在系统中寻找文件,再用tar把东西打包带走。最关键的是要学会使用管道符|,它像一条流水线,能把这些命令串联起来,让简单工具组合出强大的功能,比如 ps -ef | grep 'nginx' 就能快速找出nginx进程。
609 1
二、Linux文本处理与文件操作核心命令