Sto lavorando per l'involucro di alcuni software scientifici di immagine docker utilizzando boot2docker su Mac OS X. E quel software (https://github.com/voutcn/megahit.git) sta usando named pipe (in python codice, ma non è importante) per collegare tra loro parti diverse (scritte in C). Monto cartella temporanea da host Mac OS X macchina per fornire zona zero in contenitore di finestra mobile (a causa di uscita temporanea del software potrebbe essere enorme) con qualcosa di simile:Tubi denominati nella cartella contenitore docker montata su mac os x file system tramite boot2docker
docker run -v /external/folder:/tmp/scratch <image> <args>
Mi dà questa linea di montaggio all'interno del contenitore:
none on /tmp/scratch type vboxsf (rw,nodev,relatime)
E all'interno di questa cartella montata denominata creazione di pipe non riesce quando viene eseguito all'interno del contenitore. Non è nemmeno correlato a Python, C o una particolare lingua. Ho ricontrollato con comando di Linux mkfifo pipe1
in questa cartella con un errore:
mkfifo: cannot create fifo 'pipe1': Operation not permitted
funziona bene per qualsiasi cartella interna non montato all'interno del contenitore però. Perché succede e come potrebbe essere risolto?
PS: Ecco cosa faccio per riprodurre facilmente il problema.
1) Mac OS X con boot2docker
2) Dockerfile è:
FROM ubuntu:14.04
#WORKDIR /tmp <- this one would work
WORKDIR /tmp/scratch
ENTRYPOINT [ "mkfifo" ]
CMD [ "pipe1" ]
3) costruzione Image:
docker build --rm -t mine/namedpipes:latest .
4) esecuzione (essendo nella cartella host esterno per essere montato):
docker run -v $(pwd):/tmp/scratch mine/namedpipes:latest