Docker安装S3容器

Ada*_*dam 8 backup amazon-s3 amazon-web-services docker

在Docker主机中安装S3容器的最佳做法是什么?有没有办法透明地做到这一点?或者我是否需要使用VOLUME指令将卷装入主驱动器,然后使用CRON手动将文件备份到S3?

Pet*_*eda 14

根据您要完成的内容有不同的方法,但这是我使用 s3fs-fuse 的方法

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

文件

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"]
Run Code Online (Sandbox Code Playgroud)

并且指定的启动脚本应该是:

启动脚本.sh

#!/bin/bash
s3fs $S3_BUCKET_NAME $S3_MOUNT_DIRECTORY
Run Code Online (Sandbox Code Playgroud)

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

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


小智 1

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

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

  • 不幸的是,你的答案几乎完全错误。EMC 是否与这个问题有关?一方面,他们是 s3-fuse 驱动程序:https://github.com/s3fs-fuse/s3fs-fuse。要使用fuse驱动程序,您需要挂载到主机,然后从主机共享到docker。其次,它们似乎是 s3 存储驱动程序:https://docs.docker.com/registry/storage-drivers/s3/ 我自己仍在研究最佳实践。 (5认同)