Дар қисми имрӯзаи тарҷумаи як қатор маводҳо дар бораи Docker, мо дар бораи кор бо додаҳо сӯҳбат хоҳем кард. Аз ҷумла, дар бораи ҳаҷми Docker. Дар ин маводҳо мо пайваста муҳаррикҳои нармафзори Docker-ро бо аналогҳои гуногуни ошӣ муқоиса кардем. Дар ин чо хам аз ин анъана дур нашавем. Бигзор маълумот дар Docker ҳанут бошад. Дар ҷаҳон намудҳои зиёди ҳанут мавҷуданд ва дар Docker роҳҳои зиёде барои кор бо додаҳо мавҷуданд.
→
→
→
→
→
→
Лутфан таваҷҷӯҳ намоед, ки ин мавод бо истифода аз версияи муҳаррики Docker 18.09.1 ва версияи API таҳия шудааст
Маълумот дар Docker метавонад муваққатан ё доимӣ нигоҳ дошта шавад. Биёед бо маълумоти вақт оғоз кунем.
Нигоҳдории муваққатии маълумот
Дар контейнерҳои Docker, шумо метавонед корро бо маълумоти муваққатӣ бо ду роҳ ташкил кунед.
Бо нобаёнӣ, файлҳое, ки аз ҷониби барномае, ки дар контейнер кор мекунад, дар қабати навишташавандаи контейнер нигоҳ дошта мешаванд. Барои он ки ин механизм кор кунад, ҳеҷ чизи махсусро танзим кардан лозим нест. Он арзон ва хушҳол мебарояд. Барнома танҳо бояд маълумотро захира кунад ва кори худро идома диҳад. Аммо, пас аз қатъ шудани контейнер, маълумоте, ки бо ин роҳи оддӣ захира шудааст, низ нест мешавад.
Як ҳалли дигаре барои нигоҳ доштани файлҳои муваққатӣ дар Docker мавҷуд аст, ки барои ҳолатҳое мувофиқ аст, ки ба шумо дар муқоиса бо механизми нигаҳдории муваққатии стандартӣ сатҳи баландтари кор лозим аст. Агар ба шумо лозим набошед, ки маълумоти шумо аз мавҷудияти контейнер дарозтар нигоҳ дошта шавад, шумо метавонед tmpf-ро ба контейнер пайваст кунед - нигаҳдории муваққатии иттилоот, ки RAM-и мизбонро истифода мебарад. Ин амалиёти навиштан ва хондани маълумотро суръат мебахшад.
Аксар вақт чунин мешавад, ки маълумотро ҳатто пас аз қатъ шудани мавҷудияти контейнер нигоҳ доштан лозим аст. Барои ин ба мо механизмҳои нигоҳдории доимии маълумот лозиманд.
Нигоҳдории доимии маълумот
Ду роҳ вуҷуд дорад, ки умри маълумотро аз мӯҳлати контейнер дарозтар кунад. Яке аз роҳҳо ин истифодаи технологияи пайвастшавӣ мебошад. Бо ин равиш, шумо метавонед, масалан, папкаи воқеиро ба контейнер насб кунед. Равандҳое, ки берун аз Docker ҷойгиранд, инчунин метавонанд бо маълумоти дар чунин ҷузвдон нигоҳ дошташуда кор кунанд. Ана ин тавр аст
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 барои шурӯъкунандагон тавсия медиҳед, ки омӯзанд?
Манбаъ: will.com