首页
学习
活动
专区
圈层
工具
发布
社区首页 >问答首页 >Docker安装S3容器

Docker安装S3容器
EN

Stack Overflow用户
提问于 2016-02-04 06:45:40
回答 2查看 16.8K关注 0票数 19

在docker主机中挂载S3容器的最佳实践是什么?有没有一种透明的方式来做这件事?或者,我是否需要使用volume指令将卷装载到主机驱动器,然后使用CRON手动将文件备份到S3?

EN

回答 2

Stack Overflow用户

回答已采纳

发布于 2016-02-07 06:55:23

在流行的容器存储解决方案中,如Flocker和EMC REX-Ray,似乎没有对亚马逊S3的开箱即用支持。但是,如果您愿意将数据存储在Amazon EBS卷上,则EMC REX-Ray允许您创建、装载和拍摄卷的快照。

当然,您建议的方法也非常有效。您可以在运行容器的主机上安装AWS CLI,并编写一个简单的cron作业,将映射到容器卷的主机目录中的数据复制到S3存储桶中。

票数 2
EN

Stack Overflow用户

发布于 2020-01-15 23:37:37

根据您想要完成的内容,有不同的方法,但下面是我如何使用s3fs-fuse完成的

我创建了一个基于ubuntu的docker镜像,还包含了一些有用的依赖项(根据我的要求):在目录中安装aws cli - Install s3fs-fuse - Mount s3

文档文件

代码语言:javascript
复制
FROM ubuntu:18.04

## Some utilities
RUN apt-get update -y && \
    apt-get install -y build-essential libfuse-dev libcurl4-openssl-dev libxml2-dev pkg-config libssl-dev mime-support automake libtool wget tar git unzip
RUN apt-get install lsb-release -y  && apt-get install zip -y && apt-get install vim -y

## Install AWS CLI
RUN apt-get update && \
    apt-get install -y \
        python3 \
        python3-pip \
        python3-setuptools \
        groff \
        less \
    && pip3 install --upgrade pip \
    && apt-get clean

RUN pip3 --no-cache-dir install --upgrade awscli

## Install S3 Fuse
RUN rm -rf /usr/src/s3fs-fuse
RUN git clone https://github.com/s3fs-fuse/s3fs-fuse/ /usr/src/s3fs-fuse
WORKDIR /usr/src/s3fs-fuse 
RUN ./autogen.sh && ./configure && make && make install

## Create folder
WORKDIR /var/www
RUN mkdir s3

## Set Your AWS Access credentials
ENV AWS_ACCESS_KEY=YOURAWSACCESSKEY
ENV AWS_SECRET_ACCESS_KEY=YOURAWSSECRETACCESSKEY

## Set the directory where you want to mount your s3 bucket
ENV S3_MOUNT_DIRECTORY=/var/www/s3

## Replace with your s3 bucket name
ENV S3_BUCKET_NAME=your-s3-bucket-name

## S3fs-fuse credential config
RUN echo $AWS_ACCESS_KEY:$AWS_SECRET_ACCESS_KEY > /root/.passwd-s3fs && \
    chmod 600 /root/.passwd-s3fs

## change workdir to /
WORKDIR /

## Entry Point
ADD start-script.sh /start-script.sh
RUN chmod 755 /start-script.sh 
CMD ["/start-script.sh"]

指定的启动脚本应为:

start-script.sh

代码语言:javascript
复制
#!/bin/bash
s3fs $S3_BUCKET_NAME $S3_MOUNT_DIRECTORY

然后构建您的映像,如果您在指定的目录中创建了一个文件,那么它也应该反映在s3控制台上,反之亦然。

我在这里有一个更详细的解释和一个有效的例子:https://github.com/skypeter1/docker-s3-bucket

票数 15
EN
页面原文内容由Stack Overflow提供。腾讯云小微IT领域专用引擎提供翻译支持
原文链接:

https://stackoverflow.com/questions/35189251

复制
相关文章

相似问题

领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档