Learning Docker, Մաս 6. Աշխատանք տվյալների հետ

Docker-ի մասին նյութերի շարքի թարգմանության այսօրվա հատվածում կխոսենք տվյալների հետ աշխատելու մասին։ Մասնավորապես, Docker հատորների մասին. Այս նյութերում մենք անընդհատ համեմատում էինք 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-ը: Սա կարագացնի տվյալների գրման և ընթերցման գործողությունների կատարումը:

Հաճախ է պատահում, որ տվյալները պետք է պահվեն նույնիսկ այն բանից հետո, երբ բեռնարկղը դադարում է գոյություն ունենալ: Դա անելու համար մեզ անհրաժեշտ են տվյալների պահպանման մշտական ​​մեխանիզմներ:

Մշտական ​​տվյալների պահպանում

Տվյալների ծառայության ժամկետն ավելի երկար դարձնելու երկու եղանակ կա, քան կոնտեյների ժամկետը: Ճանապարհներից մեկը bind mount տեխնոլոգիայի օգտագործումն է: Այս մոտեցմամբ դուք կարող եք տեղադրել, օրինակ, իրական թղթապանակ կոնտեյների մեջ: Docker-ից դուրս գործընթացները նույնպես կկարողանան աշխատել նման թղթապանակում պահվող տվյալների հետ: Այդպես նայել tmpfs mount and bind mount տեխնոլոգիա:

Learning Docker, Մաս 6. Աշխատանք տվյալների հետ
tmpfs-ի տեղադրում և ամրացում

Bind mount տեխնոլոգիայի օգտագործման թերություններն այն են, որ դրա օգտագործումը բարդացնում է տվյալների կրկնօրինակումը, տվյալների միգրացիան, տվյալների փոխանակումը մի քանի բեռնարկղերի միջև: Շատ ավելի լավ է օգտագործել Docker ծավալները տվյալների մշտական ​​պահպանման համար:

Volumes Docker

Հատորը ֆայլային համակարգ է, որը տեղակայված է հյուրընկալող մեքենայի վրա՝ բեռնարկղերից դուրս: Ծավալները ստեղծվում և կառավարվում են 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-ի մասին: Այստեղ Docker-ի մասին գիրք (այս գիրքը գնելիս փորձեք ստանալ դրա ամենավերջին հրատարակությունը): Այստեղ ևս մեկ գիրք նրանց համար, ովքեր կարծում են, որ պրակտիկան տեխնոլոգիա սովորելու լավագույն միջոցն է:

Հարգելի ընթերցողներ: Docker-ի ի՞նչ նյութեր խորհուրդ կտաք սովորել սկսնակներին:

Learning Docker, Մաս 6. Աշխատանք տվյալների հետ

Source: www.habr.com

Добавить комментарий