Quid est Docker: brevis excursio in historiam et abstractiones fundamentales?

Coepi in August 10th in Slurm Docker video cursum, in quibus eam penitus resolvimus β€” ab abstractis fundamentalibus ad parametri retis.

In hoc articulo dicemus de historia Docker eiusque abstractionibus principalibus: Imago, Cli, Dockerfile. Lectura incipientibus destinata est, ideo veri simile est usui esse peritis utentibus. Nullus erit sanguis, appendix vel immersio profunda. Ipsae basics.

Quid est Docker: brevis excursio in historiam et abstractiones fundamentales?

Quod Docker

Inspiciamus definitionem Docker ex Vicipaedia.

Docker software est ad automandum instruere et administratio applicationum in ambitus continentis.

Ex hac definitione nihil constat. Imprimis incertum est quid significet "in ambitibus quae continentisationi sustentationem" significat. Invenire, in tempore abeamus. Incipiamus ab aetate quam placitum vocamus β€œEra Monolithica”.

Monolithic era

Aera monolithica est prima 2000s, cum omnes applicationes monolithicae erant, cum fasciculo dependentium. Progressus diu moratus est. Simul non multi servientes erant, omnes nominatim cognovimus et monitores. Talis est ridicula comparatio;

Cura animalia domestica sunt. In monolithicis temporibus servitores nostros sicut curas tractavimus, compta et fovebamus, pulvisculo sufflantibus. Et melioris subsidii administratione, virtualizationis usi sumus: cultorem cepimus et in pluribus machinis virtualibus incidimus, ita ut solitudo ambitus caveatur.

Hypervisor-fundatur systemata virtualizationis

Omnes probabiliter audiverunt de systematibus virtualisationum: VMware, VirtualBox, Hyper-V, Qemu KVM, etc. Applicationem solitudo et administratio subsidiorum praebent, sed etiam incommoda habent. Facere virtualizationem, hypervisorem debes. Hypervisor autem est supra caput. Et ipsa virtualis machina fere est colossus totus - gravis imago continens systema operativum, Nginx, Apache, et fortasse MySQL. Imago magna est et apparatus virtualis est incommodus ad operandum. Quam ob rem machinis virtualibus laboratum tarde esse potest. Ad hoc problema solvendum, systemata virtualizationis in gradu nucleo creatae sunt.

Kernel-level systems virtualization

Kernel-gradu virtualizationis innititur OpenVZ, Systemd-nspawn, systemata LXC. Magnum exemplum talis virtualisationis est LXC (Linux Containers).

LXC systema-gradum operativum virtualisation systemati est ad currendum plures instantiae separatae Linux systematis operantis in uno nodo. LXC machinis virtualis non utitur, sed virtualem environment cum suo processu spatii et ACERVUS network creat.

Continentia per se LXC gignit. Quid interest inter virtualis machinis et vasis?

Quid est Docker: brevis excursio in historiam et abstractiones fundamentales?

Continens processibus solitariis non competit: vulnerabilitates inveniuntur in systematibus virtualis in gradu nuclei qui eos e vase ad exercitum effugere permittunt. Si ergo opus est aliquid segregare, melius est uti machina virtuali.

Differentiae virtualizationis et continentiae in schemate videri possunt.
Ferramenta hypervisores sunt, hypervisores super OS et vasa.

Quid est Docker: brevis excursio in historiam et abstractiones fundamentales?

Hardware hypervisores frigidi sunt si aliquid recludet. Quia in ambitu paginarum et processuum potest segregare.

Hypervisores sunt sicut programma, et sunt continentia, et ulterius loquemur de illis. Systemata continens hypervisorem non habent, sed engine continens est quae vasa creat et administrat. Hoc levius est, sic ex nucleo minus supra caput aut nulla est.

Quod adhibetur in vasis ad nucleum planum

Praecipuae technologiae quae te permittunt continentem ab aliis processibus segregatum creare sunt Spatia et Circuli Imperium.

Spatia nomina: PID, Networking, Mons et User. Plures sunt, sed ad facilitatem intelligendi his intendunt.

PID Spatii fines processuum. Cum exempli gratia PID Spatii Spatium creamus et processum ibi ponemus, fit cum PID 1. Plerumque in systematis PID 1 est systema seu init. Proinde, cum in novo spatio nominandi processum ponimus, etiam PID 1 accipit.

Networking spatio spatio permittit te retiaculum secludere et interfaces tuam intus ponere. Mons est lima ratio limitationis. User restrictio in users.

Societates potestates: Memoria, CPU, IOPS, Network - circiter 12 occasus in summa. Aliter etiam dicuntur Cgroups ("C-groups").

Imperium Societates facultates pro continente administrant. Per Societates Imperium possumus dicere continens non plus quam quoddam facultatum quantitatem consumi debere.

Ad continentiam ad plene operandum, accessiones technologiae adhibentur: Facultates, Exemplar-in-scribo et aliae.

Facultates sunt, cum processum narramus quod facere potest et non potest. In gradu nuclei, hae simpliciter sunt bitmaps cum multis parametris. Exempli causa, radix usoris plena privilegia habet et omnia potest. Tempus server potest systema tempus mutare: facultates habet in tempore Capsule, et hoc est. Privilegiis utens, restrictiones ad processuum mollius configurare potes, ac per hoc te protegere.

Exemplar-in-scribendum ratio sinit nos cum imaginibus Docker operari eosque efficacius utere.

Docker currently has quaestiones compatibilitas cum Cgroups v2, ideo hic articulus specialiter in Cgroups v1.

Sed ad historiam redeamus.

Cum systemata virtualizationis in gradu nucleo apparuerunt, active adhiberi coeperunt. Caput hypervisoris evanuit, sed nonnullae difficultates superfuerunt;

  • imagines magnae: systema operantem, bibliothecas, fasciculum variarum programmatum in eundem OpenVZ impellunt, et in fine imago adhuc evadit satis ampla;
  • Nulla normali sarcina et traditio vexillum est, ergo manet problema clientium. Sunt condiciones cum duo fragmenta codicis eadem bibliotheca utantur, sed cum uaria versione. Potest esse inter eos contentio.

Ad has omnes quaestiones solvendas, altera aetas venit.

Continens era

Cum tempus continens pervenit, philosophia cum illis operandi mutatur;

  • Unum processum -- Unum continens.
  • Omnes clientelas processus necessario suo continenti trademus. Hoc requirit monolithos in microservices secantes.
  • Quo minor imago, eo melior, pauciora sunt vulnerabilitates, evolvitur velocius, et sic porro.
  • Instantiae evanescentes fiunt.

Mementote quid dixi de cura pecorum nobis? Antea exempla domestica animalia, nunc pecudum more facta sunt. Antea monolithus erat una applicatione. Nunc 100 microservices sunt, 100 vasa. Continentia quaedam 2-3 replicas habere possunt. Minori fit momenti ad omnem continentem regendum. Quod maius nobis est, expeditio est ipsius muneris: quid haec continentia facit. Haec mutatio ad vigilantiam accedit.

In 2014-2015 floruit Docker - technicae quas nunc dicemus.

Docker philosophiam mutavit et applicationem packaging normatum. Uti Docker, applicationem sarcinam possumus, repositorium mitte, inde extrahe et explica.

Omnia quae nobis necessaria sunt in Docker continente posuimus, sic problema dependentiae solvitur. Docker praestat reproducibilitatem. Plures puto irrepebilitatem incidisse: omnia opera pro te impellunt ad productionem, et ibi operatur. Cum Docker hoc problema recedit. Si continens Docker tuus incipit et facit id quod facere debet, tunc cum probabilitate maxime incipiet in productione et ibi idem faciet.

Digressio circa caput

Semper de capite controversiae sunt. Nonnulli putant Docker non onere addito portare, cum Linux nucleo utitur omnibusque eius processibus ad continentisizationem necessariis. Ut, "si dicas Docker caput esse, Linux nucleum capitis est."

Contra, si altius descendas, plura quidem in Dockera sunt quae supra caput tractum dici possunt.

Primum nomen spatii PID est. Cum processum in spatio nominali ponimus, assignatur PID 1. Eodem tempore, hic processus alium PID habet, qui in spatiis spatii extra continens situm est. Exempli gratia, Nginx in vase deducimus, PID 1 facta est (processus domini). Et in exercitu PID 12623. Dicere difficile est quantum capitis est.

Secundum est Cgroups. Cgroups per memoriam sumamus, id est, facultatem memoriam continentis limitandi. Cum facultas est, calculis ac ratiocinandi memoria reducitur: nucleus intellegendus est quot paginae partita sunt et quot adhuc huic continenti vacat. Hoc fortasse supra caput est, sed non vidi aliqua certa studia in quam afficit observantia. Et ipse non animadvertisse me subito in Docker applicatione currentem acrem in effectu damnum expertum esse.

Et notius unum de observantia. Parametri nuclei quidam ab hospite ad continentem transeunt. Etiam in aliquam ipsum, laoreet condimentum ipsum. Si vis igitur aliquid praecipuum agendi in Docker currere, exempli gratia, quod retis actuose uteris, saltem his parametris accommodare debes. Quidam nf_conntrack, enim.

De conceptu Docker

Docker pluribus constat partibus;

  1. Docker Daemon idem est Engine continens; vasis immittit.
  2. Docker CII est utilitas procuratio Docker.
  3. Dockerfile - instructiones de imagine aedificandi.
  4. Imago β€” imago e qua continens evolvitur.
  5. Quo est.
  6. Docker subcriptio est imago repositio.

Schematice aliquid simile hoc spectat:

Quid est Docker: brevis excursio in historiam et abstractiones fundamentales?

Docker daemon in Docker_host fugit et vasa immittit. Est Cliens qui mandat mandata: imaginem construe, imaginem depone, continens deduce. Docker daemon in registro accedit et eas exequitur. Cliens Docker utrumque localiter (ad nervum Unix) accedere potest et per TCP ab hospite remoto.

Eamus per singulas partes.

Docker daemonis - haec est pars server, in machina exercitus operatur: imagines downloads et vasa ex eis immittit, retis inter vasa, collectas tigna creat. "Imago creare" cum dicitur, hoc etiam daemon facit.

Docker CLI β€” Docker clientis partem, consolare utilitatem ad operandum cum daemone. Dico, non solum localiter, sed etiam retiaculis operari potest.

Praecepta fundamentalia;

docker ps - monstrant vasa quae nunc sunt in Docker hospite currentes.
docker images - show images downloaded locally.
quaesitio docker<> - quaesita imago in registro.
docker traho <> - imaginem ex registro ad machinam extrahe.
docker constructum < > β€” Colligere imaginem.
docker run<>- continens deducunt.
docker rm<>- vas removere.
docker trabes <> - continens acta
docker satus / stop / sileo <> - opus continens

Si haec mandata imperas et in illis utendo confidis, 70% proficientem in Docker in gradu usoris considera.

Dockerfile β€” Instructiones ad imaginem faciendam. Fere omnis instructior mandamus accumsan in sit. Intueamur exemplum.

Quid est Docker: brevis excursio in historiam et abstractiones fundamentales?

Hoc est quod Dockerfile similis est: imperat sinistro, argumenta dextra. Unumquodque mandatum quod hic est (et vulgo in Dockerfile scriptum) novum tabulatum in imagine creat.

Etiam aspicientes ad partem sinistram, quid agatur dure intelligere potes. Dicimus: "nos folder creo" - hoc unum tabulatum est. Facere folder operandi est alius tabulatum, et sic porro. Etiam accumsan lectus vitae facilisis efficitur. Si aliud Dockerfile creavi et aliquid in ultima linea mutavi - curro aliud quam "python" "main.py", vel clientelas ab alio fasciculo instituo - tunc priora strata pro cella reddentur.

Image - Hoc est vas packaging, vasa ex imagine immittuntur. Si Docker ex parte villici sarcinarii spectemus (sicut cum deb vel rpm fasciculis laboramus), imago essentialiter rpm sarcina est. Per yum inaugurare possumus applicationem instituere, eam delere, in reposito invenire, eamque extrahere. De eodem hic est: continentia ex imagine immissa sunt in registro Docker (similis yum, in repositorio), et unaquaeque imago habet SHA-256 Nullam, nomen et tag.

Imago aedificata est secundum mandatum e Dockerfile. Quaelibet instructio a Dockerfile novum tabulatum creat. Stratis reddi potest.

Docker subcriptio est imago Reconditorium Docker. Similes OS, Docker subcriptio publica signa habet - dockerhub. Sed repositorium tuum aedificare potes, subcriptio tuum Docker.

continentis β€” Qua immissa imago. Imago secundum mandatum Dockerfile aedificavimus, deinde ex hac imagine deducimus. Continens hic ab aliis vasis segregatur et omnia necessaria continere debet ad applicationem functionis. Hoc in casu, unum continens - unum processum. Fit ut duos processus facere debeas, sed hoc aliquantum est contrarium Docker ideologiae.

"Unum continens, unum processum" postulationem ad PID Namespatium se habet. Cum processio cum PID 1 in spatio nominali incipit, si subito decedit, tunc quoque continens totum perit. Si duo processus ibi currunt, unus est vivus et alter mortuus, continens adhuc vivet. Sed haec quaestio est de optimis exercitiis, in aliis materiis de illis loquemur.

Studere liniamenta et plenam rationem curriculi accuratius, quaeso nexum sequere: "Docker video cursum".

Author: Marcel Ibraev, administrator Kubernetes certificatus, fabrum in Southbridge exercens, orator et elit cursus Slurmiae.

Source: www.habr.com