By som rád použil Docker-in-Docker Avšak nepriaznivý používateľ poskytuje prístup k zariadeniam. Existuje spôsob, ako to spustiť pomocou kombinácie zväzkov a cap-add atď.?
odpovede:
8 pre odpoveď č. 1Bohužiaľ nie, musíte použiť --privileged
pre spustenie Docker v Docker, môžete sa pozrieť na oficiálne oznámenie kde uviedli, že je to jeden z mnohých účelov --privileged
flag.
V podstate potrebujete viac prístupu k zariadeniam hostiteľského systému na spustenie doku, ako sa vám pri behu bez --privileged
.
3 pre odpoveď č. 2
Áno, môžete v dokovacej stanici spustiť doker bez --privileged
flag. Zahŕňa upevnenie dockerovej zásuvky na nádobu takto:
docker run -it -v /var/run/docker.sock:/var/run/docker.sock
-v $(which docker):/bin/docker
alpine docker ps -a
To sa chystá pripojiť zásuvku dokovacej stanice a spustiteľný súbor do kontajnera a spustiť docker ps -a
v alpskom kontajneri. Jérôme Petazzoni, ktorý autorkoval príklad dind a urobil veľa práce na --privileged
vlajka to povedala o docke v docke:
https://jpetazzo.github.io/2015/09/03/do-not-use-docker-in-docker-for-ci/
Tento prístup už na chvíľu používam a funguje to celkom dobre.
Upozornenie s týmto prístupom je, že veci sa zmierniaso skladovaním. Budete lepšie používať kontajnery objemového objemu alebo pomenované objemy dát namiesto montáže adresárov.Pretože používate zásuvku dokovacej stanice z hostiteľa, všetky adresáre, s ktorými chcete pripojiť v podriadenom kontajneri, musia byť z kontextu hostiteľa , nie rodičovský kontajner. Stáva sa to čudné. Mala som väčšie šťastie s objemovými kontajnermi.