Омӯзиши Docker, қисми 6: кор бо додаҳо

Дар қисми имрӯзаи тарҷумаи як қатор маводҳо дар бораи Docker, мо дар бораи кор бо додаҳо сӯҳбат хоҳем кард. Аз ҷумла, дар бораи ҳаҷми Docker. Дар ин маводҳо мо пайваста муҳаррикҳои нармафзори Docker-ро бо аналогҳои гуногуни ошӣ муқоиса кардем. Дар ин чо хам аз ин анъана дур нашавем. Бигзор маълумот дар Docker ҳанут бошад. Дар ҷаҳон намудҳои зиёди ҳанут мавҷуданд ва дар Docker роҳҳои зиёде барои кор бо додаҳо мавҷуданд.

Қисми 1: Асосҳо
Қисми 2: Шартҳо ва консепсияҳо
Қисми 3: Файлҳои Docker
Қисми 4: Коҳиш додани андозаи тасвир ва суръатбахшии сохтани онҳо
Қисми 5: Фармонҳо
Қисми 6: кор бо маълумот

Омӯзиши Docker, қисми 6: кор бо додаҳо

Лутфан таваҷҷӯҳ намоед, ки ин мавод бо истифода аз версияи муҳаррики Docker 18.09.1 ​​ва версияи API таҳия шудааст 1.39.

Маълумот дар Docker метавонад муваққатан ё доимӣ нигоҳ дошта шавад. Биёед бо маълумоти вақт оғоз кунем.

Нигоҳдории муваққатии маълумот

Дар контейнерҳои Docker, шумо метавонед корро бо маълумоти муваққатӣ бо ду роҳ ташкил кунед.

Бо нобаёнӣ, файлҳое, ки аз ҷониби барномае, ки дар контейнер кор мекунад, дар қабати навишташавандаи контейнер нигоҳ дошта мешаванд. Барои он ки ин механизм кор кунад, ҳеҷ чизи махсусро танзим кардан лозим нест. Он арзон ва хушҳол мебарояд. Барнома танҳо бояд маълумотро захира кунад ва кори худро идома диҳад. Аммо, пас аз қатъ шудани контейнер, маълумоте, ки бо ин роҳи оддӣ захира шудааст, низ нест мешавад.

Як ҳалли дигаре барои нигоҳ доштани файлҳои муваққатӣ дар Docker мавҷуд аст, ки барои ҳолатҳое мувофиқ аст, ки ба шумо дар муқоиса бо механизми нигаҳдории муваққатии стандартӣ сатҳи баландтари кор лозим аст. Агар ба шумо лозим набошед, ки маълумоти шумо аз мавҷудияти контейнер дарозтар нигоҳ дошта шавад, шумо метавонед tmpf-ро ба контейнер пайваст кунед - нигаҳдории муваққатии иттилоот, ки RAM-и мизбонро истифода мебарад. Ин амалиёти навиштан ва хондани маълумотро суръат мебахшад.

Аксар вақт чунин мешавад, ки маълумотро ҳатто пас аз қатъ шудани мавҷудияти контейнер нигоҳ доштан лозим аст. Барои ин ба мо механизмҳои нигоҳдории доимии маълумот лозиманд.

Нигоҳдории доимии маълумот

Ду роҳ вуҷуд дорад, ки умри маълумотро аз мӯҳлати контейнер дарозтар кунад. Яке аз роҳҳо ин истифодаи технологияи пайвастшавӣ мебошад. Бо ин равиш, шумо метавонед, масалан, папкаи воқеиро ба контейнер насб кунед. Равандҳое, ки берун аз Docker ҷойгиранд, инчунин метавонанд бо маълумоти дар чунин ҷузвдон нигоҳ дошташуда кор кунанд. Ана ин тавр аст нигоҳ tmpfs васлкунӣ ва технологияи васлкунӣ.

Омӯзиши Docker, қисми 6: кор бо додаҳо
Tmpfs-ро насб кунед ва васлро пайваст кунед

Камбудиҳои истифодаи технологияи bind mount дар он аст, ки истифодаи он нусхабардории додаҳо, интиқоли додаҳо ва мубодилаи маълумотро дар байни контейнерҳои сершумор мушкил мекунад. Барои нигоҳдории доимии маълумот истифода бурдани ҳаҷми Docker беҳтар аст.

Ҳаҷмҳои Docker

Ҳаҷм як системаи файлист, ки дар мошини ҳост берун аз контейнерҳо ҷойгир аст. Docker ҳаҷмҳоро эҷод ва идора мекунад. Инҳоянд хусусиятҳои асосии ҳаҷмҳои Docker:

  • Онҳо воситаи нигоҳдории доимии иттилоот мебошанд.
  • Онҳо мустақиланд ва аз контейнерҳо ҷудо карда шудаанд.
  • Онҳо метавонанд дар байни контейнерҳои гуногун тақсим карда шаванд.
  • Онҳо ба шумо имкон медиҳанд, ки хондан ва навиштани маълумотро самаранок ташкил кунед.
  • Ҳаҷмҳо метавонанд дар захираҳои провайдери абрии дурдаст ҷойгир карда шаванд.
  • Онҳо метавонанд рамзгузорӣ карда шаванд.
  • Ба онҳо ном додан мумкин аст.
  • Контейнер метавонад пешакӣ бо маълумот пур кардани ҳаҷмро ташкил кунад.
  • Онҳо барои санҷиш қулай мебошанд.

Тавре ки шумо мебинед, ҳаҷмҳои Docker дорои хосиятҳои олӣ мебошанд. Биёед дар бораи чӣ гуна сохтани онҳо сӯҳбат кунем.

Эҷоди Ҳаҷмҳо

Ҳаҷмҳоро метавон бо истифода аз Docker ё бо истифода аз дархостҳои API эҷод кард.

Ин аст дастури Dockerfile, ки ба шумо имкон медиҳад ҳаҷмро ҳангоми оғози контейнер эҷод кунед.

VOLUME /my_volume

Ҳангоми истифодаи чунин дастур, Docker пас аз сохтани контейнер, ҳаҷми дорои маълумоте, ки аллакай дар макони муайян мавҷуд аст, эҷод мекунад. Лутфан таваҷҷӯҳ намоед, ки агар шумо бо истифода аз Dockerfile ҳаҷм эҷод кунед, ин шуморо аз зарурати муайян кардани нуқтаи васлкунӣ барои ҳаҷм озод намекунад.

Шумо инчунин метавонед бо истифода аз формати JSON ҳаҷмҳоро дар Dockerfile эҷод кунед.

Илова бар ин, ҳаҷмҳоро бо истифода аз сатри фармон ҳангоми кор кардани контейнер сохтан мумкин аст.

Кор бо ҳаҷмҳо аз сатри фармон

▍Сохтани ҳаҷми

Шумо метавонед як ҳаҷми мустақилро бо фармони зерин эҷод кунед:

docker volume create —-name my_volume

▍Дар бораи ҷилдҳо маълумот гиред

Барои дидани рӯйхати ҳаҷмҳои Docker, фармони зеринро истифода баред:

docker volume ls

Шумо метавонед як ҳаҷми мушаххасро ба монанди ин омӯзед:

docker volume inspect my_volume

▍Нест кардани ҳаҷми

Шумо метавонед як ҷилди монанди инҳоро нест кунед:

docker volume rm my_volume

Барои нест кардани ҳама ҳаҷмҳое, ки дар контейнерҳо истифода намешаванд, шумо метавонед фармони зеринро истифода баред:

docker volume prune

Пеш аз нест кардани ҷилдиҳо, Docker аз шумо хоҳиш мекунад, ки ин амалро тасдиқ кунед.

Агар ҳаҷм бо контейнер алоқаманд бошад, ҳаҷмро то он даме, ки контейнери мувофиқ нест карда нашавад, нест кардан мумкин нест. Дар айни замон, ҳатто агар контейнер нест карда шавад, Docker инро на ҳамеша дарк мекунад. Агар ин рӯй диҳад, шумо метавонед фармони зеринро истифода баред:

docker system prune

Он барои тоза кардани захираҳои Docker пешбинӣ шудааст. Пас аз иҷро кардани ин фармон, шумо бояд ҳаҷмҳоеро, ки ҳолати онҳо қаблан нодуруст муайян шуда буд, нест кунед.

--mount ва --volume парчамҳо

Барои кор бо ҳаҷми шумо, ҳангоми занг задан фармон docker, шумо бояд аксар вақт парчамҳоро истифода баред. Масалан, барои эҷод кардани ҳаҷм ҳангоми сохтани контейнер, шумо метавонед сохтори зеринро истифода баред:

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

Дар замонҳои қадим (то соли 2017) парчам маъмул буд --volume. Дар аввал, ин парчам (он метавонад дар шакли кӯтоҳшуда низ истифода шавад, пас он ба назар мерасад -v) барои контейнерхои мустакил истифода мешуд ва байрак --mount - дар муҳити Docker Swarm. Бо вуҷуди ин, аз Docker 17.06, парчам --mount дар ҳама гуна сенария истифода бурдан мумкин аст.

Бояд гуфт, ки хангоми истифода бурдани байрак --mount миқдори маълумоти иловагӣ, ки бояд дар фармон нишон дода шавад, меафзояд, аммо бо якчанд сабаб, беҳтар аст, ки ин парчамро истифода баред, на ин ки --volume. Парчам --mount - Ин ягона механизмест, ки ба шумо имкон медиҳад бо хидматҳо кор кунед ё параметрҳои драйвери ҳаҷмиро муайян кунед. Илова бар ин, бо ин парчам кор кардан осонтар аст.

Дар мисолҳои мавҷудаи фармонҳое, ки барои кор бо додаҳо дар Docker нигаронида шудаанд, шумо метавонед мисолҳои зиёди истифодаи парчамро пайдо кунед. -v. Ҳангоми кӯшиши мутобиқ кардани ин фармонҳо барои худ, дар хотир доред, ки парчамҳо --mount и --volume форматҳои параметрҳои гуногунро истифода баред. Яъне шумо танҳо иваз карда наметавонед -v ба --mount ва як бригадаи коргарй гиред.

Фарқи асосии байни --mount и --volume он аст, ки ҳангоми истифодаи парчам --volume тамоми параметрҳо якҷоя дар як майдон ҷамъоварӣ, ва ҳангоми истифода --mount параметрҳо ҷудо карда мешаванд.

Ҳангоми кор бо --mount параметрҳо ҳамчун ҷуфтҳои калидӣ-арзиш муаррифӣ мешаванд, яъне ба назар чунин менамояд key=value. Ин ҷуфтҳо бо вергул ҷудо карда мешаванд. Дар ин ҷо вариантҳои маъмулан истифода мешаванд --mount:

  • type - намуди васлкунӣ. Арзиши калиди мувофиқ метавонад бошад пайваст кунед, ҳаҷми ё tmpfs. Дар ин чо сухан дар бораи ҷилдҳо меравад, яъне мо ба маънӣ таваҷҷӯҳ дорем volume.
  • source - сарчашмаи кӯҳӣ. Барои ҷилди номбаршуда ин номи ҷилди аст. Барои ҷилдҳои номаълум ин калид муайян карда нашудааст. Онро метавон кӯтоҳ кард src.
  • destination — роҳе, ки ба он файл ё ҷузвдон дар контейнер васл карда шудааст. Ин калидро метавон кӯтоҳ кард dst ё target.
  • readonly - ҳаҷми пешбинишударо насб мекунад танҳо барои хондан. Ин калид ихтиёрист ва ба он арзиши таъиншуда надорад.

Дар ин ҷо як мисоли истифода аст --mount бо параметрҳои зиёд:

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

Натиҷаҳо

Инҳоянд чанд фармонҳои муфид, ки шумо метавонед ҳангоми кор бо ҳаҷмҳои Docker истифода баред:

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

Дар ин ҷо рӯйхати параметрҳои маъмулан истифодашаванда барои --mount, дар як фармон ба монанди docker run --mount my_options my_image:

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

Ҳоло, ки мо ин силсилаи Docker-ро ҷамъбаст кардем, вақти он расидааст, ки чанд сухан дар бораи он, ки омӯзандагони Docker оянда метавонанд ба куҷо раванд. дар ин ҷо мақолаи хуби хуб дар бораи Docker. дар ин ҷо китоб дар бораи Docker (ҳангоми харидани ин китоб кӯшиш кунед, ки нашри охиринро гиред). дар ин ҷо Китоби дигаре, ки барои онҳое, ки боварӣ доранд, ки амалия беҳтарин роҳи омӯзиши технология аст, мувофиқ аст.

Хонандагони азиз! Кадом маводҳоро дар бораи Docker барои шурӯъкунандагон тавсия медиҳед, ки омӯзанд?

Омӯзиши Docker, қисми 6: кор бо додаҳо

Манбаъ: will.com

Илова Эзоҳ