2014-07-26 13 views
5

Chcę zamontować s3fs wewnątrz kontenera w doku.Czy s3fs nie jest w stanie zamontować wewnątrz kontenera w doku?

zrobiłem Döcker obraz z s3fs i zrobił tak:

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 

Pokazuje "Operation not permitted" błąd.

Więc google, a nie jak to jeszcze raz (dodawanie --privileged = true):

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 

Następnie montażu nie pokazuje błędów, ale jeśli uruchomić komendę ls „punktem końcowym transportu nie jest podłączony” błąd występuje.

Jak mogę zainstalować s3fs wewnątrz kontenera w doku? Czy to niemożliwe?

[aktualizacji]

Dodaj konfigurację Dockerfile.

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 

Odpowiedz

6

Nie jestem pewien, co zrobiłeś, że nie działa, ale udało mi się dostać to działać tak:

Dockerfile:

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 

Po zbudowaniu z:

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

Pobiegłem pojemnik z:

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

a następnie wewnątrz pojemnika:

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

które z powodzeniem wymienione pliki w moim s3bucket.

Musisz upewnić się, że jądro na twoim hoście obsługuje bezpiecznik, ale wygląda na to, że już to zrobiłeś?

Uwaga: Twój punkt montowania S3 nie będzie wyświetlać/pracować z wnętrza innych kontenerów podczas korzystania z dyrektyw Docker --volume lub --volumes-from. Na przykład:

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 .. 

nie zwraca żadnych plików, mimo że w zbiorniku znajdują się pliki.

+1

Dziękujemy! Testuję twoją procedurę, działa jak urok. Ale, jak mówisz, nie można go zamontować z innego pojemnika ... Czy istnieje sposób użycia go z innego pojemnika? – kochizufan

+5

'' uprzywilejowany' jest tym, co robi, niestety działa tylko podczas fazy uruchamiania, a nie fazy budowy. – buley

Powiązane problemy