跳到主要内容

使用 s3fs 挂载腾讯云 COS

· 阅读需 3 分钟

前言

之前写过一篇文章关于挂载腾讯云 COS 内容到本地,其中使用到了一款名为 cosfs 的软件,后来我发现该软件是 s3fs 的一个分支。并且腾讯云 COS 兼容 S3 的 API,所以索性直接用 s3fs 算了。

之前那篇文章中也缺失了开机自动挂载的部分,我最近发现了一个内含 s3fs 的 Docker 镜像,可以通过 Docker 容器自动启动来实现开机自动挂载。

项目介绍

docker-s3fs-client1 提供了内嵌 s3fs 的 Docker 镜像,该镜像可以把远程的 Amazon S3 仓库的内容挂载到容器中。

腾讯云 COS 兼容 Amazon S3 的 API,所以可以使用 s3fs 挂载腾讯云 COS 中的内容。

使用示例

接下来使用 Docker Compose 来配置并部署 docker-s3fs-client 容器。

s3fs/docker-compose.yml
version: '3.8'
services:
s3fs:
image: efrecon/s3fs
restart: unless-stopped
cap_add:
- SYS_ADMIN
security_opt:
- 'apparmor:unconfined'
devices:
- /dev/fuse
volumes:
- /mnt/s3fs:/opt/s3fs/bucket:rshared
environment:
AWS_S3_BUCKET: xxxx-xxxxxx
AWS_S3_ACCESS_KEY_ID: xxxxxxxxxxxxxxxxxx
AWS_S3_SECRET_ACCESS_KEY: xxxxxxxxxxxxxxxxxx
AWS_S3_URL: https://cos.ap-shanghai.myqcloud.com

docker-compose.ymlvolumes部分中,/mnt/s3fs:/opt/s3fs/bucket:rshared意味把宿主机mnt/s3fs文件夹挂载到容器里,你可能需要提前手动创建该文件夹;/opt/s3fs/bucket是固定的,并且rshared也是必不可少的。

docker-compose.yml中配置的环境变量看名称一般都知道什么意思,在挂载腾讯云 COS 的时候可以参考其 相关文档 2

执行以下命令来启动容器,注意在包含docker-compose.ymls3fs文件夹中执行。

docker-compose up -d

如果配置正确的话,容器正常启动后就能在宿主机中正常访问腾讯云 COS 的内容了。

根据上面的配置,可以在宿主机的mnt/s3fs目录中访问被挂载的腾讯云 COS 的内容。如果不能正确访问请查看容器日志排查错误。