VM o Docker?

Com entendre que necessiteu Docker i no una màquina virtual? Heu de determinar què voleu aïllar exactament. Si voleu aïllar un sistema amb recursos garantits i maquinari virtual, l'elecció hauria de recaure en la màquina virtual. Si necessiteu aïllar les aplicacions en execució com a processos del sistema separats, necessitareu Docker.

Aleshores, quina diferència hi ha entre els contenidors Docker i les màquines virtuals?

Màquina virtual (VM) és un ordinador virtual amb tots els dispositius virtuals i un disc dur virtual, en el qual s'instal·la un nou sistema operatiu independent juntament amb controladors de dispositius virtuals, gestió de memòria i altres components. És a dir, obtenim una abstracció de maquinari físic que permet executar molts ordinadors virtuals en un ordinador.
Una màquina virtual instal·lada pot ocupar espai en disc de diferents maneres:

  • espai de disc dur fix, que permet un accés més ràpid al disc dur virtual i evita la fragmentació dels fitxers;
  • assignació de memòria dinàmica. Quan s'instal·leu aplicacions addicionals, la memòria s'assignarà dinàmicament fins que assoleixi la quantitat màxima assignada.

Com més màquines virtuals hi hagi al servidor, més espai ocupen i també requereixen el suport constant de l'entorn necessari perquè la vostra aplicació funcioni.

estibador és un programari per construir aplicacions basades en contenidors. Els contenidors i les màquines virtuals tenen avantatges similars, però funcionen de manera diferent. Els contenidors ocupen menys espai, perquè ús excessiu de més recursos compartits del sistema amfitrió que la màquina virtual, perquè a diferència de VM, proporciona virtualització a nivell del sistema operatiu, no de maquinari. Aquest enfocament proporciona menys empremta de memòria, un desplegament més ràpid i una escala més fàcil.

El contenidor proporciona un mecanisme més eficient per encapsular aplicacions proporcionant les interfícies necessàries al sistema host. Aquesta característica permet als contenidors compartir el nucli del sistema, on cadascun dels contenidors s'executa com un procés independent del sistema operatiu principal, que té el seu propi conjunt d'àrees de memòria (el seu propi espai d'adreces virtuals). Com que l'espai d'adreces virtuals de cada contenidor és el seu, les dades que pertanyen a diferents àrees de memòria no es poden canviar.
El sistema operatiu natiu de Docker és Linux (Docker també es pot utilitzar a Windows i MacOS), utilitza els seus principals avantatges, que li permeten organitzar un nucli dividit. El llançament dels contenidors Docker a Windows es farà dins d'una màquina virtual Linux. Els contenidors comparteixen el sistema operatiu del sistema amfitrió i el sistema operatiu principal per a ells és Linux.

Contenidor: com funciona?

envàs és una abstracció a nivell d'aplicació que combina codi i dependències. Els contenidors es creen sempre a partir d'imatges, afegint una capa superior escrivible i inicialitzant diversos paràmetres. Com que un contenidor té la seva pròpia capa d'escriptura i tots els canvis s'emmagatzemen en aquesta capa, diversos contenidors poden compartir l'accés a la mateixa imatge mestra.

Cada contenidor es pot configurar mitjançant un fitxer del projecte docker-compose inclòs a la solució principal, docker-compose.yml. Allà podeu establir diversos paràmetres com ara el nom del contenidor, els ports, els identificadors, els límits de recursos, les dependències entre altres contenidors. Si no especifiqueu un nom de contenidor a la configuració, Docker crearà un contenidor nou cada vegada, assignant-li un nom aleatòriament.

Quan s'inicia un contenidor des d'una imatge, Docker munta el sistema de fitxers de lectura/escriptura a la part superior de les capes inferiors. Aquí és on s'executaran tots els processos que volem que executi el nostre contenidor Docker.

Quan Docker inicia per primera vegada un contenidor, la capa inicial de lectura/escriptura està buida. Quan es produeixen canvis, s'apliquen a aquesta capa; per exemple, si voleu modificar un fitxer, aquest es copiarà de la capa de només lectura que hi ha a continuació a la capa de lectura-escriptura.
La versió només de lectura del fitxer continuarà existint, però ara està amagada sota la còpia. Els volums s'utilitzen per emmagatzemar dades, independentment del cicle de vida del contenidor. Els volums s'inicien quan es crea un contenidor.

Com s'associa la imatge al contenidor?

Imatge - l'element principal per a cada contenidor. La imatge es crea a partir d'un Dockerfile afegit al projecte i és un conjunt de sistemes de fitxers (capes) superposats els uns sobre els altres i agrupats, disponibles només per a la lectura; el nombre màxim de capes és de 127.

Al cor de cada imatge hi ha una imatge base, que s'especifica per l'ordre FROM, el punt d'entrada quan es genera una imatge Dockerfile. Cada capa és una capa només de lectura i està representada per una única ordre que modifica el sistema de fitxers, escrit en un Dockerfile.
Per combinar aquestes capes en una sola imatge, Docker utilitza el sistema de fitxers Union multicapa avançat (AuFS està construït sobre UnionFS), permetent que diferents fitxers i directoris de diferents capes de fitxers se superposin de manera transparent, creant un sistema de fitxers associat.

Les capes contenen metadades que us permeten emmagatzemar informació relacionada amb cada capa en temps d'execució i de creació. Cada capa conté un enllaç a la següent capa, si la capa no té cap enllaç, aquesta és la capa superior de la imatge.

Dockerfile pot contenir ordres com ara:

  • FROM - punt d'entrada en la formació de la imatge;
  • MINTAINER - el nom del propietari de la imatge;
  • RUN - execució d'ordres durant el muntatge de la imatge;
  • ADD - copiant el fitxer amfitrió a una imatge nova, si especifiqueu un fitxer URL, Docker el baixarà al directori especificat;
  • ENV - variables d'entorn;
  • CMD: inicia la creació d'un nou contenidor basat en la imatge;
  • ENTRYPOINT: l'ordre s'executa quan s'inicia el contenidor.
  • WORKDIR és el directori de treball per executar l'ordre CMD.
  • USUARI: estableix l'UID per al contenidor creat a partir de la imatge.
  • VOLUME - Munta el directori host al contenidor.
  • EXPOSE és un conjunt de ports que s'escolten al contenidor.

Com funciona UnionFS?

UnionFS — Sistema de fitxers de pila de serveis (FS) per a Linux i FreeBSD. Aquest FS implementa el mecanisme de còpia sobre escriptura (Copy-On-Write, COW). La unitat de treball d'UnionFS és una capa, cada capa s'ha de considerar com un sistema de fitxers complet independent amb una jerarquia de directoris des de la pròpia arrel. UnionFS crea un muntatge d'unió per a altres sistemes de fitxers i us permet combinar de manera transparent fitxers i directoris de diferents sistemes de fitxers (anomenats branques) en un únic sistema de fitxers enllaçat, de manera transparent per a l'usuari.

El contingut dels directoris amb els mateixos camins es mostraran junts en un directori combinat (en el mateix espai de noms) del sistema de fitxers resultant.

UnionFS combina capes basant-se en els principis següents:

  • una de les capes es converteix en una capa de nivell superior, la segona i les capes posteriors es converteixen en capes de nivell inferior;
  • els objectes de capa són accessibles per a l'usuari "de dalt a baix", és a dir. si l'objecte sol·licitat es troba a la capa "superior", es retorna, independentment de la presència d'un objecte amb el mateix nom a la capa "inferior"; en cas contrari, es retorna l'objecte de la capa "inferior"; si l'objecte sol·licitat no és ni allà ni allà, es retorna l'error "No hi ha cap fitxer o directori";
  • la capa de treball és la "superior", és a dir, totes les accions de l'usuari per canviar les dades només es reflecteixen a la capa de nivell superior, sense afectar el contingut de les capes de nivell inferior.

Docker és la tecnologia més comuna per utilitzar contenidors en el treball d'aplicacions. S'ha convertit en l'estàndard en aquesta àrea, basant-se en els cgroups i els espais de noms proporcionats pel nucli de Linux.

Docker ens permet desplegar aplicacions ràpidament i fer el millor ús del sistema de fitxers compartint el nucli del sistema operatiu entre tots els contenidors, executant-se com a processos del sistema operatiu separats.

Font: www.habr.com

Afegeix comentari