2014-07-26 39 views
5

Ben liman işçisi kabın içine s3fs monte etmek istiyorum. s3fs liman işçisi kabın içine monte etmek mümkün değil midir?

Ben s3fs ile liman işçisi görüntüsünü yaptı ve bunun gibi yaptı:
host$ docker run -it --rm docker/s3fs bash 
[ [email protected]:~ ]$ s3fs s3bucket /mnt/s3bucket -o allow_other -o allow_other,default_acl=public-read -ouse_cache=/tmp 
fuse: failed to open /dev/fuse: Operation not permitted 

"İşleme izin verilmedi" hatası gösteriliyor.

yüzden googled ve yine (= --privileged true eklendikten) şöyle yaptı:,, Sonra

host$ docker run -it --rm --privileged=true docker/s3fs bash 
[ [email protected]:~ ]$ s3fs s3bucket /mnt/s3bucket -o allow_other -o allow_other,default_acl=public-read -ouse_cache=/tmp 
[ [email protected]:~ ]$ ls /mnt/s3bucket 
ls: cannot access /mnt/s3bucket: Transport endpoint is not connected 
[ [email protected]:~ ]$ fusermount -u /mnt/s3bucket 
[ [email protected]:~ ]$ s3fs s3bucket /mnt/s3bucket -o allow_other -o allow_other,default_acl=public-read -ouse_cache=/tmp 
[ [email protected]:~ ]$ ls /mnt/s3bucket 
ls: cannot access /mnt/s3bucket: Transport endpoint is not connected 

montaj değil hata gösterir ama ls komutunu çalıştırırsanız, hata "uç aktarım bağlı değil" geliştiğinde.

nasıl liman işçisi kabın içine s3fs monte edebilirsiniz

? imkansız mı?

[GÜNCELLENDİ]

Dockerfile yapılandırması ekleyin.

Dockerfile:

FROM dockerfile/ubuntu 

RUN apt-get update 
RUN apt-get install -y build-essential 
RUN apt-get install -y libfuse-dev 
RUN apt-get install -y fuse 
RUN apt-get install -y libcurl4-openssl-dev 
RUN apt-get install -y libxml2-dev 
RUN apt-get install -y mime-support 

RUN \ 
    cd /usr/src && \ 
    wget http://s3fs.googlecode.com/files/s3fs-1.74.tar.gz && \ 
    tar xvzf s3fs-1.74.tar.gz && \ 
    cd s3fs-1.74/ && \ 
    ./configure --prefix=/usr && \ 
    make && make install 

ADD passwd/passwd-s3fs /etc/passwd-s3fs 
ADD rules.d/99-fuse.rules /etc/udev/rules.d/99-fuse.rules 
RUN chmod 640 /etc/passwd-s3fs 

RUN mkdir /mnt/s3bucket 

rules.d/99-fuse.rules:

KERNEL==fuse, MODE=0777 

cevap

6

Bunu işe yaramadı vermedi emin değilim, ama bu elde edebildi

Dockerfile: böyle çalışmak

FROM ubuntu:12.04 

RUN apt-get update -qq 
RUN apt-get install -y build-essential libfuse-dev fuse-utils libcurl4-openssl-dev libxml2-dev mime-support automake libtool wget tar 

RUN wget https://github.com/s3fs-fuse/s3fs-fuse/archive/v1.77.tar.gz -O /usr/src/v1.77.tar.gz 
RUN tar xvz -C /usr/src -f /usr/src/v1.77.tar.gz 
RUN cd /usr/src/s3fs-fuse-1.77 && ./autogen.sh && ./configure --prefix=/usr && make && make install 

RUN mkdir /s3bucket 

ile bina sonra: kabın içine

docker run -it -e AWSACCESSKEYID=obscured -e AWSSECRETACCESSKEY=obscured --privileged ubuntu/s3fs:latest bash 

ve sonra:

docker build --rm -t ubuntu/s3fs:latest . 

Ben kabı ran başarıyla benim s3bucket dosyaları listelenen

[email protected]:/# s3fs s3bucket /s3bucket 
[email protected]:/# ls /s3bucket 
testing.this.out work.please working 
[email protected]:/# 

.

Sen ana makinede çekirdek sigorta desteklediğinden emin olun gerekiyor, ancak Şimdiye kadar yapmış görünüyor?

Not: Docker en --volume veya --volumes-den direktifleri kullanırken Kişisel S3 mountpoint/diğer kaplarda içinden çalışmalarını göstermez. Örneğin: kova dosyaları bulunmasına rağmen

docker run -t --detach --name testmount -v /s3bucket -e AWSACCESSKEYID=obscured -e AWSSECRETACCESSKEY=obscured --privileged --entrypoint /usr/bin/s3fs ubuntu/s3fs:latest -f s3bucket /s3bucket 
docker run -it --volumes-from testmount --entrypoint /bin/ls ubuntu:12.04 -ahl /s3bucket 
total 8.0K 
drwxr-xr-x 2 root root 4.0K Aug 21 21:32 . 
drwxr-xr-x 51 root root 4.0K Aug 21 21:33 .. 

döner hiçbir dosyaları.

+1

teşekkür ederiz! Ben senin yordam sınamak, bu işe yaradı. Dediğiniz gibi Ama aynı zamanda, bu ... diğer kaptan monte edemez diğer kaptan kullanmak için herhangi bir yolu var mı? – kochizufan

+5

'bunu ne yazık ki bu sadece koşmak fazında değil inşa aşaması sırasında çalışır --privileged' olduğunu. – buley

İlgili konular