Sì, è possibile. Tuttavia, non è possibile avere una partizione aufs nidificata all'interno di aufs. Devi montare un altro sistema o utilizzare un backend di archiviazione diverso.
Puoi dare un'occhiata al makefile della finestra mobile e a hack/dind
. Hai bisogno della modalità privilegiata per farlo.
Il modo più semplice per provare è fare make shell
e una volta nel contenitore, puoi avviare un nuovo demone docker :)
EDIT:ho provato Koding e in effetti non è possibile. Non sei privilegiato all'interno del loro contenitore, quindi non puoi avviare una nuova finestra mobile.
Sì, la finestra mobile può essere eseguita in un contenitore Linux.
Ma la finestra mobile funzionerà solo con lxc
driver di esecuzione e in un unconfined lxc.
Quindi, ecco come ottenere docker in LXC:
-
Assicurati di avere
lxc.aa_profile = lxc-container-default-with-nesting
(se non funziona o non hai questo profilo, provalxc.aa_profile = unconfined
) nelconfig
file del tuo LXC per assicurarti che non venga bloccato daapparmor
. Per maggiori informazioni, visita (o modifica) i file in/etc/apparmor.d/lxc
. -
Devi installare lxc nel tuo contenitore. Se sei sotto Ubuntu, ad esempio, esegui nel contenitore
apt-get install lxc
. -
Assicurati che il demone docker sia chiamato con
--exec-driver=lxc
parametro. Puoi testarlo prima immettendo manualmentedocker -d --exec-driver=lxc
. In Ubuntu, per utilizzare l'argomento all'avvio, è sufficiente modificare/etc/default/docker
e assicurati di avere la riga:
DOCKER_OPTS="--exec-driver=lxc"
Segui questo thread per gli aggiornamenti:https://github.com/docker/docker/issues/6783
Se devi risolvere il problema:
- tieni d'occhio
apparmor
logs nei log di kern dell'host. - avvia
docker -d ...
manualmente per ottenere gli output.
Nota:potresti non avere la mano sull'host per modificare lo script apparmor LXC su Koding giudicando le risposte degli altri, comunque, questo howto rimane interessante se sei il fornitore LXC e risponde alla domanda più generale che hai posto nel tuo titolo della domanda e che potrebbe attrarre persone in scenari più generali (come lo ero io).
Ed ecco una guida completa per chiunque altro nella stessa barca.
Avvia un terminale e inizia a digitare...
docker run -i -t --privileged -v /var/lib/docker ubuntu bash
apt-get update && apt-get install -y docker.io
service docker.io start
ln -s /usr/bin/docker.io /usr/local/bin/docker
docker run -i -t ubuntu bash
Ora dovresti trovarti all'interno di un contenitore all'interno di un altro contenitore.
Osservazioni:
- La bandiera
--privileged
è necessario sul contenitore esterno per farlo. - DEVI usare
-v /var/lib/docker
per evitare la limitazione menzionata da creack. ln -s /usr/bin/docker.io /usr/local/bin/docker
sta solo creando un collegamento simbolico in modo da poter digitaredocker
invece didocker.io