Learning Docker, Дел 6: Работа со податоци

Во денешниот дел од преводот на серијата материјали за Докер ќе зборуваме за работа со податоци. Особено, за томовите на Докер. Во овие материјали, ние постојано ги споредувавме механизмите за програмирање Docker со различни аналогии за јадење. Овде нема да отстапиме од оваа традиција. Нека податоците во Docker се зачини. Во светот има многу зачини, а Docker има многу начини за работа со податоци.

Дел 1: Основи
Дел 2: термини и концепти
Дел 3: Dockerfiles
Дел 4: Намалување на големината на сликите и забрзување на нивното склопување
Дел 5: команди
Дел 6: работа со податоци

Learning Docker, Дел 6: Работа со податоци

Забележете дека овој материјал е подготвен со користење на верзијата на моторот Docker 18.09.1 ​​и верзијата API 1.39.

Податоците во Docker може да се складираат привремено или трајно. Да почнеме со привремени податоци.

Привремено складирање на податоци

Постојат два начини за управување со привремени податоци во контејнерите на Docker.

Стандардно, датотеките создадени од апликација што работи во контејнер се складираат во слој на контејнер што може да се запише. За да може овој механизам да работи, не треба да се конфигурира ништо посебно. Излегува евтино и весело. Апликацијата едноставно треба да ги зачува податоците и да продолжи да го прави своето. Меѓутоа, откако контејнерот ќе престане да постои, податоците зачувани на толку едноставен начин исто така ќе исчезнат.

Привременото складирање на датотеки во Docker е уште едно решение кое е погодно за случаи кога е потребно повисоко ниво на перформанси во споредба со она што може да се постигне со користење на стандардниот механизам за привремено складирање податоци. Ако не ви треба вашите податоци да се чуваат подолго отколку што постои контејнерот, можете да се поврзете со контејнерот tmpfs - привремена продавница за информации што користи RAM меморија на домаќинот. Ова ќе го забрза извршувањето на операциите за пишување и читање податоци.

Често се случува податоците да треба да се складираат дури и откако контејнерот ќе престане да постои. За да го направите ова, потребни ни се постојани механизми за складирање податоци.

Постојано складирање на податоци

Постојат два начини да се направи животниот век на податоците подолг од животниот век на контејнерот. Еден начин е да се користи технологијата за монтирање со врзување. Со овој пристап, можете да монтирате, на пример, реална папка во контејнерот. Процесите надвор од Docker ќе можат да работат и со податоци складирани во таква папка. Така е погледнете Tmpfs технологија за монтирање и врзување.

Learning Docker, Дел 6: Работа со податоци
Монтирање tmpfs и монтажа за врзување

Недостатоците од користењето на технологијата за поврзување се дека нејзината употреба го комплицира создавањето резервни копии на податоци, миграцијата на податоците, споделувањето податоци меѓу неколку контејнери. Многу е подобро да се користат Docker volumes за постојано складирање на податоци.

Томови Докер

Том е датотечен систем кој се наоѓа на машината домаќин надвор од контејнерите. Томовите се креирани и управувани од Docker. Еве ги главните својства на томовите на Docker:

  • Тие се средство за трајно складирање на информации.
  • Тие се независни и одвоени од контејнери.
  • Тие можат да се делат помеѓу различни контејнери.
  • Тие ви овозможуваат да организирате ефикасно читање и пишување на податоци.
  • Томовите може да се постават на ресурсите на далечинскиот провајдер на облак.
  • Тие можат да бидат шифрирани.
  • Може да им се дадат имиња.
  • Контејнерот може да организира претходно пополнување на волуменот со податоци.
  • Тие се погодни за тестирање.

Како што можете да видите, томовите на Docker имаат неверојатни својства. Ајде да разговараме за тоа како да ги создадеме.

Креирање томови

Томовите може да се креираат со помош на Docker или API барања.

Еве една инструкција во Dockerfile која ви овозможува да креирате волумен кога стартувате контејнер.

VOLUME /my_volume

Кога користите слична инструкција, Docker, откако ќе го создаде контејнерот, ќе создаде волумен кој ги содржи податоците што веќе постојат на наведената локација. Забележете дека ако креирате волумен користејќи Dockerfile, ова не ве ослободува од потребата да ја наведете точката на монтирање на јачината на звукот.

Можете исто така да креирате томови во Dockerfile користејќи JSON формат.

Покрај тоа, тома може да се креираат со помош на алатки за командна линија додека работи контејнерот.

Работа со томови од командната линија

▍Создавање волумен

Можете да креирате самостоен волумен со следнава команда:

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 би им препорачале на почетниците да учат?

Learning Docker, Дел 6: Работа со податоци

Извор: www.habr.com

Додадете коментар