2014-10-16 3 views
7

Ecco il mio problema: voglio creare un ambiente chroot all'interno di un contenitore di finestra mobile. Il problema è che debootstrap non può essere eseguito, perché non può montare proc nel chroot:debootstrap all'interno di un contenitore di finestra mobile

W: Failure trying to run: chroot /var/chroot mount -t proc proc /proc

(nel log il problema risulta essere: mount: permission denied)

Se run --privileged il contenitore, (ovviamente) funziona ... Mi piacerebbe davvero davvero debootstrapare il chroot nel Dockerfile (molto più pulito). C'è un modo per farlo funzionare?

Grazie mille!

risposta

0

Risposta breve, senza modalità privilegiata no non c'è un modo.

Docker è destinato ai micro-servizi e non è un rimpiazzo di sostituzione per le macchine virtuali. Avere più installazioni in un contenitore sicuramente non è congruente con quello. Perché non utilizzare più contenitori docker?

+0

ho costruito un'applicazione che esegue gli snippet di codice (per lo più soluzioni degli studenti di esercizi) in ambienti in gabbia. Eseguo un centinaio di script node.js allo stesso tempo, la soluzione migliore che ho trovato era chroot + aufs (inizialmente ho provato con docker come gabbia di esecuzione, ma avevo alcune limitazioni, come non essere in grado di condividere i descrittori di file tra il controller processo e i bambini in gabbia generati, che uso per IPC). Ho fatto tutto questo in una macchina Virtualbox, ma ora stavo cercando di sfruttare l'eccezionale ecosistema di docker (provisioning, distribuzione ecc.). – fbrusch

+1

Non sono chiaro perché hai detto "descrittori di file" invece di file ... ma puoi condividere file attraverso contenitori con volumi condivisi – Rondo

+1

Rispondi alla domanda, non lamentarti perché le persone devono farlo. A volte non puoi scegliere i tuoi strumenti e devi fare qualcosa. A volte vuoi semplicemente saperne di più. – hazydev

3

No, questo non è attualmente possibile.

Issue #1916 (che riguarda l'esecuzione di operazioni con privilegi durante docker build) è ancora un problema aperto. A un certo punto è stata discussa l'aggiunta di un flag della riga di comando e il comando RUNP ma nessuno di questi è stato implementato.

1

Si potrebbe utilizzare la variante fakechroot di debootstrap, in questo modo:

fakechroot fakeroot debootstrap --variant=fakechroot ... 

Cheers!

0

L'aggiunta di --cap-add=SYS_ADMIN --security-opt apparmor:unconfined al comando docker run funziona per me.

Vedi moby/moby issue 16429

Problemi correlati