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.
→
→
→
→
→
→
Tingueu en compte que aquest material es va preparar amb la versió del motor Docker 18.09.1 i la versió API .
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 tecnologia de muntatge tmpfs i bind mount.

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_volumeQuan 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 lsPodeu 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_volumePer eliminar tots els volums que no utilitzen els contenidors, podeu recórrer a l'ordre següent:
docker volume pruneAbans 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 pruneEstà 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 , o . Aquí estem parlant de volums, és a dir, ens interessa el valorvolume.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 asrc.destination- el camí al qual es munta el fitxer o la carpeta al contenidor. Aquesta clau es pot escurçar adstotarget.readonly- munta el volum que es pretén . 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_imageResultats de
Aquí hi ha algunes ordres útils que podeu utilitzar quan treballeu amb volums Docker:
docker volume createdocker volume lsdocker volume inspectdocker volume rmdocker 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=volumesource=volume_namedestination=/path/in/containerreadonly
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. molt bon article sobre Docker. un llibre sobre Docker (quan compreu aquest llibre, proveu d'aconseguir-ne l'edició més recent). 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?
Font: www.habr.com
