2016-12-11 1 views
1

Ich versuche zu verstehen, in welchem ​​Umfang ein Docker-Image Zugriff auf ein Verzeichnis/tmp/hat.Haben Docker-Images Zugriff auf das tmp-Verzeichnis?

In meinem Fall verwende ich das frolvlad/alpine-oraclejdk8: schlanke Bild und meine App muss in einen temporären Ordner schreiben.

Wenn ich definiere tmpfs wie dies in meiner Docker-compose (v2) file: df_server: image: "${DF_IMAGE}" build: . tmpfs: - /tmp ich einen Fehler erhalten, dass das Verzeichnis bereits vorhanden. Wenn ich versuche, über meine Webanwendung auf das Verzeichnis zuzugreifen, erhalte ich die Fehlermeldung, dass das Verzeichnis nicht existiert.

Wenn ich das tmpfs-Verzeichnis als etwas anderes definiere, z. tmpfs: - /foobar Meine Webanwendung kann auf das Verzeichnis foobar zugreifen und es verwenden.

Antwort

2

Die meisten Bilder, die auf einer Distro basieren, werden mit einem /tmp Verzeichnis im Bild angezeigt. Dadurch wird der Speichertreiber verwendet, den der Docker für die Verwendung festgelegt hat.

$ docker run -ti frolvlad/alpine-oraclejdk8:slim ls -ld /tmp 
drwxrwxrwt 2 root  root   4096 Oct 18 18:58 /tmp 

die zu

geschrieben werden können
$ docker run -ti frolvlad/alpine-oraclejdk8:slim \ 
    time dd if=/dev/zero of=/tmp/zero bs=4k count=64k 
32768+0 records in 
32768+0 records out 
real 0m 0.84s 
user 0m 0.00s 
sys  0m 0.11s 

Montage tmpfs fügt ein im Speicher/tmp statt

$ docker run -ti --tmpfs /tmp frolvlad/alpine-oraclejdk8:slim \ 
    time dd if=/dev/zero of=/tmp/zero bs=4k count=64k 
65536+0 records in 
65536+0 records out 
real 0m 0.13s 
user 0m 0.01s 
sys  0m 0.12s 

Und Sie sollten davon (verschiedene alpine Basis schreiben und lesen können, Bild)

docker run -ti --tmpfs /tmp mhart/alpine-node node -e ' 
    fs.writeFile(`/tmp/test`, `test`, (err, res) => { 
    console.log(`write`, err, res) 
    fs.readFile(`/tmp/test`, (err, data) => console.log(`read`, err, data)) 
    })' 

null undefined 
null <Buffer 74 65 73 74> 

Ich bin mir nicht sicher, wie Sie den Fehler "Verzeichnis existiert bereits" erhalten.

Vielleicht das gleiche auf einem anderen Docker Host versuchen? Ziehen Sie die neueste frolvlad/alpine-oraclejdk8:slim?

Verwandte Themen