Ano, je to možné. Nemůžete však mít oddíl aufs vnořený do aufs. Musíte připojit jiný systém nebo použít jiný backend úložiště.
Můžete se podívat na makefile dockeru a hack/dind
. K tomu potřebujete privilegovaný režim.
Nejjednodušší způsob, jak to zkusit, je udělat make shell
a jakmile budete v kontejneru, můžete spustit nového démona dockeru :)
EDIT:Zkoušel jsem Koding a opravdu to není možné. V jejich kontejneru nemáte oprávnění, takže nemůžete spustit nový docker.
Ano, docker může běžet v linuxovém kontejneru.
Docker však poběží pouze s lxc
exekuční ovladač a v neomezeném lxc.
Zde je návod, jak získat docker v LXC:
-
Ujistěte se, že máte
lxc.aa_profile = lxc-container-default-with-nesting
(pokud to nefunguje nebo tento profil nemáte, zkustelxc.aa_profile = unconfined
) vconfig
souboru vašeho LXC, abyste zajistili, že nebude blokovánapparmor
. Pro více informací navštivte (nebo upravte) soubory v/etc/apparmor.d/lxc
. -
Musíte nainstalovat lxc do svého kontejneru. Pokud jste například pod ubuntu, spusťte v kontejneru
apt-get install lxc
. -
Ujistěte se, že démon docker je volán s
--exec-driver=lxc
parametr. Předtím si to můžete vyzkoušet ručním zadánímdocker -d --exec-driver=lxc
. V ubuntu, aby byl argument použit při spuštění, jednoduše upravte/etc/default/docker
a ujistěte se, že máte řádek:
DOCKER_OPTS="--exec-driver=lxc"
Aktualizace najdete v tomto vláknu:https://github.com/docker/docker/issues/6783
Pokud potřebujete vyřešit problém:
- sledujte
apparmor
se přihlásí do protokolů jádra hostitele. - spusťte
docker -d ...
ručně získat výstupy.
Poznámka:Možná nemáte od hostitele možnost upravit skript LXC apparmor na Koding posouzením odpovědí ostatních, každopádně tento návod zůstává zajímavý, pokud jste poskytovatelem LXC, a odpovídá na obecnější otázku, kterou jste položili ve svém název otázky a to by mohlo přilákat lidi v obecnějších scénářích (jako jsem byl já).
A zde je úplný průvodce pro kohokoli jiného na stejné lodi.
Spusťte terminál a začněte psát..
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
Nyní byste měli být uvnitř kontejneru v jiném kontejneru.
Poznámky:
- Příznak
--privileged
K tomu je potřeba na vnější nádobě. - MUSÍTE použít
-v /var/lib/docker
abyste se vyhnuli omezení uvedenému vrzáním. ln -s /usr/bin/docker.io /usr/local/bin/docker
právě vytváří symbolický odkaz, abychom mohli napsatdocker
místodocker.io