Diligenter cogita prius per Docker-in-Docker pro CI vel test environment

Diligenter cogita prius per Docker-in-Docker pro CI vel test environment

Docker-in-Docker in virtualised Docker daemonis ambitus currit intra se continens imagines aedificandi continens. Praecipuum propositum creandi Docker-in-Docker erat ad auxilium explicandum ipsum Docker. Multi homines ad currendum utuntur Jenkins CI. Hoc primo normale videtur, sed tunc oriuntur problemata quae vitari possunt Docker insertis in vase Jenkins CI. Articulus hic tibi narrat quomodo hoc feceris. Si in solutione finali sine singulis quaeris, modo ultimam sectionem articuli lege, "Problema solvendo."

Diligenter cogita prius per Docker-in-Docker pro CI vel test environment

Docker-in-Docker: "Bonum"

Plus quam duos annos posui in Docker vexillum -privileged et scripsit prima versio dind. Propositum erat adiuvare nucleum quadrigis citius Docker evolvere. Ante Docker-in-Docker, progressionis cycli typici hoc modo respexit:

  • hacity hack;
  • aedificare;
  • sistens currens Docker daemon;
  • novum Docker daemonem deducendum;
  • probatio;
  • iterare cyclum.

Si voluisses facere ecclesiam pulchram et producibilem (hoc est, in vase), tunc intricatiora facta est;

  • hacity hack;
  • fac versionem laboratam Docker currit;
  • novum Docker cum vetus Docker;
  • prohibere Docker daemonem;
  • initium novum Docker daemonis;
  • probare;
  • prohibere novum Docker daemonem;
  • repetere.

Veniente Docker-in-Docker, processus simplicior factus est;

  • hacity hack;
  • comitium + in one stage;
  • iterare cyclum.

Nonne multo melius sic?

Diligenter cogita prius per Docker-in-Docker pro CI vel test environment

Docker-in-Docker: "Malum"

Sed contra opinionem vulgi, Docker-in-Docker non est 100 stellae, mannae et unicornes. Quod dico, plures esse quaestiones, ut elit eget, perspicias.

Una earum spectat LSMs (Modulorum securitatis Linux) sicut AppArmor et SELinux: cum continens currit, "internum Docker" potest applicare profiles securitatis quae conflictat vel confundet "externus Docker". Hoc problema solvendum difficillimum est, cum originalem exsecutionem vexillum privilegiorum iungi conatur. Mutationes meae operatae et omnes probationes in machina Debian et Ubuntu test VMs mea transirent, sed in Michael Crosby machinam (fedoram ut meminimus habebat) colliderent et incenderent. Causam quaestionis accuratam meminisse non possum, sed potest esse quod Mike est sapiens guy qui cum SELINUX=exigendo (appArmor usus sum) et meae mutationes SELinux profile rationem non cepit.

Docker-in-Docker: "Malum"

Secundus exitus est cum rectoribus Docker repono. Cum Docker-in-Docker curris, Docker externus currit super systematis fasciculi regularis (EXT4, BTRFS, vel quicquid habes) et Docker internus currit super systematis exemplaris (AUFS, BTRFS, Fabricae Mapper , etc., secundum figuram ad usum Docker externum). Facit multas compositiones quae non operantur. Exempli gratia, super AUFS currere non poteris.

Si curris BTRFS super BTRFS, primum laborare debet, sed semel subvolumina nidificantur, subvolumen delendo parens deficiet. Fabrica Mapper moduli non habet nomina spatii, quare si plures instantiae Docker in eadem machina currant, omnes imagines (et influentiae) in se invicem et in continente machinis tergum videre poterunt. Hoc est malum.

Multas difficultates solvendas sunt operae. Exempli gratia, si AUFS in Docker interno uti voles, solum folder /var/lib/docker in volumen converte et bene valebis. Docker quaedam nomina ignobilia ad Device Mapper scopum nomina addidit ut si plures Docker vocat in eadem machina currant, in se invicem non ingrediuntur.

Sed huiusmodi non est omnino simplex, ut ex his videri potest vasa in dind promptuario in GitHub.

Docker-in-Docker: Is deterioratur

Quid de cache aedificatis? Quod quidem satis difficile est. Saepe a me rogant "si Docker-in-Docker curro, quomodo uti possum imagines hospitio meo utere potius quam omnia in internum Docker trahere"?

Nonnulli praenomen homines ab hospite ad Docker-in-Docker continente /var/lib/docker ligare conati sunt. Interdum compluribus vasis /var/lib/docker communicant.

Diligenter cogita prius per Docker-in-Docker pro CI vel test environment
Visne notitias tuas corrumpere? Quia haec est prorsus quid notitia tua laedet!

Docker daemon manifesto destinabatur ad aditum /var/lib/dcker exclusivum habere. Nihil aliud "tangere, poke, vel iadere" debet aliqua lima Docker in hoc folder sita.

Cur ita? Hoc enim evenit, dum dotCloud elaborat, unam ex durissimis lectionibus didicit. DotCloud continens machinam cucurrit cum plures processus accessu /var/lib/dotcloud eodem tempore habendo. Dolus calliditatis ut tabelli atomici subrogandi (pro loco in- edendi), codicem piperis cum seris advisoriis et mandatoriis, et aliis experimentis cum systematibus securis ut SQLite et BDB non semper operantur. Cum essemus redisignantes machinam nostram continentis, quae tandem Docker facta est, unus ex magnis consiliis consilium erat ut omnes operationes continens sub uno daemone confirmet omnes concursiones ineptias tollere.

Non me fefellit: omnino potest aliquid facere bonum, certum et ieiunium quod multiplices processus implicat et par- tas modernas potestates. Sed simplicius et facilius sentiamus illud scribere et conservare codicem utendo Docker ut solus lusor.

Hoc significat, si directorium /var/lib/docker communicas inter multiplices instantias Docker, difficultates habebis. Nimirum hoc operari potest, praesertim in primis tentationis gradibus. "Audi, Ma, possum decuriam currere sicut doctor!" Sed experire aliquid implicatius, ut eandem imaginem trahas ex duobus exemplis diversis, et mundum ardere videbis.

Hoc significat quod si ratio CI tua aedificat et aedificat, quotiescumque sileo tuum Docker-in-Docker continens, nullum in cella suum demittis periculum. Hoc omnino non est frigus!

Oratio

Eamus gradum retro. Visnene Docker-in-Docker an modo vis posse currere Docker et aedificare et currere vasa et imagines e systemate tuo CI, dum ipsa CI ratio in vase est?

Opto plerique hanc optionem volentes, significationem systematis CI quasi Jenkins ut vascula currere possint. Idque facillimum est, nervum Docker simpliciter in vas CI tuo inserere et cum vexillo -v coniunge.

Simpliciter pone, cum vas CI tuum cucurreris (Jenkins vel alius), pro aliquo versari cum Docker-in-Docker, illud a linea incipias;

docker run -v /var/run/docker.sock:/var/run/docker.sock ...

Continens hic nunc aditus ad Docker nervum habebit et ideo vascula currere poterit. Nisi quod pro continentia "puer" currit, vasa "fratrem" mittet.

Conare hoc utere officiali schoeni imaginem (quae continet Docker binarium);

docker run -v /var/run/docker.sock:/var/run/docker.sock 
           -ti docker

Spectat et operatur sicut Docker-in-Docker, sed Docker-in-Docker non est: cum haec continens additamenta creet, in summo gradu Docker creabuntur. Non experieris latus effectus nidificandi et cella per multiplices vocationes dividendas.

Nota: Previous versiones huius articuli monuerunt de Docker binarii ab exercitu ad continens. Hoc iam ambiguum factum est sicut machina Docker non iam bibliothecas statas vel prope statarias operit.

Si vis Docker ex Jenkins CI uti, habes 2 optiones:
Docker CLI inaugurari utens fundamentalis imaginis systematis fasciculi (i.e. si imago tua in Debian innititur, .deb fasciculis utere), utens Docker API.

Quidam ads

Gratias tibi ago pro manendo nobiscum. Placetne tibi vasa nostra? Vis videre plus interesting contentus? Suscipe nos ponendo ordinem vel commendando amicos; cloud VPS for developers from $4.99, unicum analogum de ingressu servientibus, quod a nobis pro vobis est inventum: Tota veritas de VPS (KVM) E5-2697 v3 (6 Cores) 10GB DDR4 480GB SSD 1Gbps e $19 vel quomodo ministrator communicabit? (praesto cum RAID1 et RAID10, usque ad 24 coros et usque ad 40GB DDR4).

Dell R730xd 2x vilius in Equinix Tier IV centri Amstelodami? Tantum hic 2 x Intel TetraDeca-Core Xeon 2x E5-2697v3 2.6GHz 14C 64GB DDR4 4x960GB SSD 1Gbps 100 TV from $199 in Belgio! Dell R420 - 2x E5-2430 2.2Ghz 6C 128GB DDR3 2x960GB SSD 1Gbps 100TB - from $99! Read about Quomodo aedificare infrastructuras: Ed. classis cum usu Dell R730xd E5-2650 v4 servientibus valet 9000 nummis Europaeis?

Source: www.habr.com

Add a comment