Learning Docker, Part 6: Treballar amb dades

En la part d'avui de la traducció d'una sèrie de materials sobre Docker, parlarem del treball amb dades. En particular, sobre els volums de Docker. En aquests materials, vam comparar constantment els mecanismes de programació de Docker amb diverses analogies comestibles. Aquí no ens desviarem d'aquesta tradició. Que les dades de Docker siguin espècies. Hi ha moltes espècies al món i Docker té moltes maneres de treballar amb dades.

Part 1: Fonaments
Part 2: termes i conceptes
Part 3: Dockerfiles
Part 4: Reduir la mida de les imatges i accelerar-ne el muntatge
Part 5: ordres
Part 6: treball amb dades

Learning Docker, Part 6: Treballar amb dades

Tingueu en compte que aquest material es va preparar amb la versió del motor Docker 18.09.1 ​​​​i la versió API 1.39.

Les dades a Docker es poden emmagatzemar de manera temporal o permanent. Comencem amb dades temporals.

Emmagatzematge temporal de dades

Hi ha dues maneres de gestionar les dades temporals als contenidors de Docker.

Per defecte, els fitxers creats per una aplicació que s'executa en un contenidor s'emmagatzemen en una capa de contenidor que es pot escriure. Perquè aquest mecanisme funcioni, no cal configurar res especial. Resulta barat i alegre. L'aplicació només ha de desar les dades i continuar fent les seves coses. Tanmateix, després que el contenidor deixi d'existir, les dades desades d'una manera tan senzilla també desapareixeran.

L'emmagatzematge temporal de fitxers a Docker és una altra solució adequada per als casos en què es requereix un nivell de rendiment superior en comparació amb el que es pot aconseguir mitjançant el mecanisme d'emmagatzematge temporal de dades estàndard. Si no necessiteu que les vostres dades s'emmagatzemin més temps del que existeix el contenidor, podeu connectar-vos al contenidor tmpfs, un magatzem d'informació temporal que utilitza la memòria RAM de l'amfitrió. Això accelerarà l'execució de les operacions d'escriptura i lectura de dades.

Sovint passa que les dades s'han d'emmagatzemar fins i tot després que el contenidor deixi d'existir. Per fer-ho, necessitem mecanismes d'emmagatzematge de dades persistents.

Emmagatzematge de dades persistent

Hi ha dues maneres de fer que la vida útil de les dades sigui més llarga que la del contenidor. Una manera és utilitzar la tecnologia de muntatge d'enllaç. Amb aquest enfocament, podeu muntar, per exemple, una carpeta de la vida real al contenidor. Els processos fora de Docker també podran treballar amb dades emmagatzemades en aquesta carpeta. Així és com mira tecnologia de muntatge tmpfs i bind mount.

Learning Docker, Part 6: Treballar amb dades
Muntatge de tmpfs i muntatge d'enllaç

Els desavantatges d'utilitzar la tecnologia de muntatge d'enllaç són que el seu ús complica la còpia de seguretat de dades, la migració de dades, l'intercanvi de dades entre diversos contenidors. És molt millor utilitzar els volums Docker per a l'emmagatzematge de dades persistent.

Docker de volums

Un volum és un sistema de fitxers que es troba a la màquina host fora dels contenidors. Docker crea i gestiona els volums. Aquestes són les principals propietats dels volums Docker:

  • Són un mitjà d'emmagatzematge permanent d'informació.
  • Són independents i separats dels contenidors.
  • Es poden compartir entre diferents contenidors.
  • Us permeten organitzar una lectura i escriptura eficient de les dades.
  • Els volums es poden col·locar en els recursos d'un proveïdor de núvol remot.
  • Es poden xifrar.
  • Se'ls pot posar noms.
  • El contenidor pot organitzar la prepopulació del volum amb dades.
  • Són convenients per provar.

Com podeu veure, els volums Docker tenen propietats sorprenents. Parlem de com crear-los.

Creació de Volums

Els volums es poden crear mitjançant sol·licituds de Docker o API.

Aquí teniu una instrucció al Dockerfile que us permet crear un volum quan inicieu un contenidor.

VOLUME /my_volume

Quan s'utilitza una instrucció similar, Docker, després de crear el contenidor, crearà un volum que conté les dades que ja existeixen a la ubicació especificada. Tingueu en compte que si creeu un volum amb un fitxer Dockerfile, això no us eximeix de la necessitat d'especificar el punt de muntatge del volum.

També podeu crear volums en un Dockerfile utilitzant el format JSON.

A més, es poden crear volums mitjançant eines de línia d'ordres mentre el contenidor s'està executant.

Treballant amb volums des de la línia d'ordres

▍Creació de volums

Podeu crear un volum autònom amb l'ordre següent:

docker volume create —-name my_volume

▍Consulta informació sobre volums

Per veure una llista de volums de Docker, utilitzeu l'ordre següent:

docker volume ls

Podeu explorar un volum específic com aquest:

docker volume inspect my_volume

▍Suprimir un volum

Podeu suprimir un volum com aquest:

docker volume rm my_volume

Per eliminar tots els volums que no utilitzen els contenidors, podeu recórrer a l'ordre següent:

docker volume prune

Abans de suprimir volums, Docker us demanarà que confirmeu aquesta operació.

Si un volum està associat a un contenidor, aquest volum no es pot suprimir fins que no s'elimini el contenidor corresponent. Al mateix temps, encara que s'elimini el contenidor, Docker no sempre ho entén. Si això passa, podeu utilitzar l'ordre següent:

docker system prune

Està dissenyat per netejar els recursos de Docker. Després d'executar aquesta ordre, hauríeu de poder suprimir volums l'estat dels quals abans era incorrecte.

Els senyaladors --mount i --volume

Per treballar amb volums, quan crideu l'ordre docker, sovint haureu d'utilitzar banderes. Per exemple, per crear un volum durant la creació del contenidor, podeu utilitzar aquesta construcció:

docker container run --mount source=my_volume, target=/container/path/for/volume my_image

En l'antiguitat (fins al 2017), la bandera era popular --volume. Inicialment, aquesta bandera (també es pot utilitzar en forma abreujada, després sembla -v) es va utilitzar per a contenidors autònoms i la bandera --mount - en un entorn Docker Swarm. Tanmateix, a partir de Docker 17.06, la bandera --mount es pot utilitzar en qualsevol escenari.

Cal tenir en compte que quan s'utilitza la bandera --mount augmenta la quantitat de dades addicionals que s'han d'especificar a l'ordre, però, per diverses raons, és millor utilitzar aquesta marca en particular i no --volume. Bandera --mount és l'únic mecanisme que us permet treballar amb serveis o especificar opcions de controlador de volum. A més, aquesta bandera és més fàcil de treballar.

En els exemples existents d'ordres de manipulació de dades de Docker, podeu veure molts exemples d'ús de la bandera -v. Quan intenteu adaptar aquestes ordres per vosaltres mateixos, tingueu en compte que les banderes --mount и --volume utilitzar diferents formats de paràmetres. És a dir, no es pot substituir simplement -v en --mount i aconseguir un equip de treball.

La principal diferència entre --mount и --volume és que quan s'utilitza la bandera --volume tots els paràmetres es recullen en un sol camp i quan s'utilitzen --mount els paràmetres estan separats.

Quan es treballa amb --mount els paràmetres es representen com a parells clau-valor, és a dir, sembla key=value. Aquestes parelles estan separades per comes. Aquestes són les opcions que s'utilitzen habitualment --mount:

  • type - tipus de muntatge. El valor de la clau corresponent pot ser s'uneixen, volum o tmpfs. Aquí estem parlant de volums, és a dir, ens interessa el valor volume.
  • source - Muntar la font. Per als volums amb nom, aquest és el nom del volum. Per als volums sense nom, aquesta clau no està especificada. Es pot escurçar a src.
  • destination - el camí al qual es munta el fitxer o la carpeta al contenidor. Aquesta clau es pot escurçar a dst o target.
  • readonly - munta el volum que es pretén només per llegir. L'ús d'aquesta clau és opcional i no se li assigna cap valor.

Aquí teniu un exemple d'ús --mount amb moltes opcions:

docker run --mount type=volume,source=volume_name,destination=/path/in/container,readonly my_image

Resultats de

Aquí hi ha algunes ordres útils que podeu utilitzar quan treballeu amb volums Docker:

  • docker volume create
  • docker volume ls
  • docker volume inspect
  • docker volume rm
  • docker volume prune

Aquí teniu una llista d'opcions que s'utilitzen habitualment --mount, aplicable en un comandament del formulari docker run --mount my_options my_image:

  • type=volume
  • source=volume_name
  • destination=/path/in/container
  • readonly

Ara que hem completat aquesta sèrie de Docker, és hora de dir algunes paraules sobre cap a on poden anar els estudiants de Docker. aquí està molt bon article sobre Docker. aquí està un llibre sobre Docker (quan compreu aquest llibre, proveu d'aconseguir-ne l'edició més recent). aquí està un altre llibre per a aquells que pensen que la pràctica és la millor manera d'aprendre tecnologia.

Benvolguts lectors! Quins materials Docker recomanaríeu perquè aprenguin els principiants?

Learning Docker, Part 6: Treballar amb dades

Font: www.habr.com

Afegeix comentari